簡體   English   中英

關於iPhone上的套接字流的問題

[英]Question about Socket Streams on iPhone

我想將UIImage發送到帶有套接字的服務器。 我正在使用ADC中的以下代碼:


- (IBAction)searchForSite:(id)sender

{

    NSString *urlStr = [sender stringValue];

    if (![urlStr isEqualToString:@""]) {

        [searchField setEnabled:NO];

        NSURL *website = [NSURL URLWithString:urlStr];

        if (!website) {

            NSLog(@"%@ is not a valid URL");

            return;

        }

        NSHost *host = [NSHost hostWithName:[website host]];

        // oStream is instance variable

        [NSStream getStreamsToHost:host port:80 inputStream:nil
            outputStream:&oStream];

        [oStream retain];

        [oStream setDelegate:self];

        [oStream scheduleInRunLoop:[NSRunLoop currentRunLoop]

            forMode:NSDefaultRunLoopMode];

        [oStream open];

    }

}

第一個問題:我想創建一個NSOutputStream對象,但是發現只能用文件,緩沖區或內存將其初始化。 然后如何將流輸出到套接字?

第二個問題:ADC的參考告訴我們,方法getStreamsToHost:port:inputStream:outputStream:將代表輸出流的對象返回到遠程主機。 主機如何將輸出流返回給自己? 在哪里可以在代碼中添加輸出流以發送到主機

第一個問題

已經與插座對其進行初始化。 NSStream的getStreamsToHost消息已經為您提供了一個套接字,可以與指定的主機進行對話。 每當您要寫入套接字時,只需使用oStream即可

第二個問題

在第一個問題中得到了回答。 請記住,您正在打開端口80的套接字。 因此,可能您正在遠程主機上運行WebServer。 為了能夠將圖像發送到遠程服務器,您需要實現HTTP協議。 在下面檢查我的建議。 我認為這會使您的生活更輕松。


一些建議:

我知道您沒有問這個,但是讓我給您一個建議。 您正在嘗試通過套接字發送圖像。 我會使用更高級別的協議(例如HTTPFTP)來做到這一點。 使用普通套接字將迫使您自己實施新協議,更不用說服務器端代碼來處理傳入的圖像了。

因此,如果您使用HTTP ,只需在您喜歡的WEB開發平台(.NET,PHP,Java,Python,RoR,CGI等)中編寫一些服務器端腳本,然后在 WebPage上使用准則即可在iPhone上提交圖像。 更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM