2009-03-28 3 views
0

ソケットを使用してサーバーにUIImageを送信します。私はADCからこのコードを使用しています:iPhoneのソケットストリームに関する質問


- (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オブジェクトを作成したいが、私はそれが唯一のファイル、バッファ、またはメモリでinitilizedことができることがわかります。どうすればストリームをソケットに出力できますか?

2番目の質問:ADCのリファレンスは、getStreamsToHost:port:inputStream:outputStreamメソッドがリモートホストに出力ストリームを表すオブジェクトを返すことを示しています。ホストはどのようにして出力ストリームを自分自身に返すことができますか? はすでにソケットでそれを初期化です

あなた:そして、どこでホスト

答えて

2

最初の質問に送信するコードで出力ストリームを追加することができます。 NSStreamのgetStreamsToHostメッセージは、指定されたホストpostと通信するためのソケットをすでに提供しています。ソケットに書き込む場合はいつでも、oStreamを使用してください。

2番目の質問:最初の質問に答えたの

種類。ポートへのソケットを開いていることに注意してください。したがって、リモートホスト上でWebServerを実行している可能性があります。リモートサーバーにイメージを送信できるようにするには、HTTPプロトコルを実装する必要があります。下の私の提案をチェックしてください。私はそれがあなたの人生を楽にしてくれると思います。


少し提案:

私はあなたがこれを頼むが、私はあなたの提案を与えることはできませんでした知っています。ソケットを介してイメージを送信しようとしています。私はHTTPまたはFTPのようなより高いレベルのプロトコルを使用します。プレーンソケットを使用すると、受信した画像を処理するためのサーバーサイドコードはもちろん、新しいプロトコルを自分で実装する必要があります。

あなたはHTTPを使用するのであれば、ちょうどあなたのお気に入りのWeb開発プラットフォームではほとんどのサーバサイドスクリプトを作成(.NET、PHPやJava、Pythonの、RoRの、CGI、何でも)だけにthisウェブページ上のガイドラインを使用しますiPhoneで画像を送信してください。それは簡単です。

+0

いつoStreamにUIImageデータを追加できますか? [oStream open]または 'getStreamToHost'の前 –

+1

それは後になっています。ただし、80ポートに送信している場合は、Webサーバーに送信している可能性があります。したがって、HTTPプロトコルを自分で実装する必要があります。私の答えをよく読んでください。あなたが私の提案に従うならば、イメージを送信することができます。 –

+0

自分のアプリでは、ポート1100が使用されます。そして、それはウィンドウモバイルアプリと同じサーバーを共有します。だから私はプロトコルを変更することは許されません。とにかくあなたの答えと提案に感謝します。 –

関連する問題