1

ストリーム オブジェクト (入力/出力) を使用してサーバーと通信しようとしています。しかし、これがうまくいっているのか、それともすでに行ったことを適応させる必要があるのか​​ はわかりません.

現時点では、サーバーと通信する必要がある各ビューで、次のメソッドで接続を開いています。

- (void)initNetworkCommunication {
  CFReadStreamRef readStream;
  CFWriteStreamRef writeStream;
  CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)kServerIp, kServerPort, &readStream, &writeStream);
  inputStream = (__bridge NSInputStream *)readStream;
  outputStream = (__bridge NSOutputStream *)writeStream;

  [inputStream setDelegate:self];
  [outputStream setDelegate:self];

  [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
  [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

  [inputStream open];
  [outputStream open];
}

そして、それが正しい方法であるかどうかはわかりません(そうではないと確信しています)。また、JSONを使用してサーバーと通信しています(また、それが最善の方法であるかどうかはわかりませんが、それが通知されない場合)

ですから、ストリーム オブジェクトの正しい使い方を教えていただけないでしょうか :) この投稿 uitabbarcontroller を使用して iOS でソケットを管理するを見つけましたが、何をしなければならないのかよくわかりません。

psストリームを使用して、データベースでクエリを実行しています。つまり、app -> giveMeMyNews -> server -> yourNews -> app -> Display です。かなり単純ですが、私はiPhone開発に本当に慣れていないので、これが正しいかどうかわかりません:(

4

1 に答える 1

1

ストリームは、入力ストリームまたは出力ストリームのいずれかを持つことができるように機能しています。ストリームは、送信するバイトを受け入れることができる場合、または受信した場所で新しいバイトが使用可能になったときに、デリゲートメソッドを送信します。

私がstream:handleEvent:メソッドをどのように実装したかについての私のBonjourの記事を見てください、それは物事をクリアするはずです:http: //www.cocoanetics.com/2012/11/bonjour/

最後に、iOSデバイスやMacデバイス間でWiFi経由で通信する場合は、オブジェクトの送信を大幅に簡素化するDTBonjourを作成しました。NSObjectを接続して送信すると、NSObjectは自動的にplistまたはjsonとしてエンコードされ、受信者はデコードされたオブジェクトとして取得します。http://www.cocoanetics.com/2012/11/and-bonjour-to-you-too/

少なくとも、私のコードは、プロセスを理解するのに役立つほど十分に明確であると信じています。

于 2012-12-16T11:35:53.563 に答える