1

udp 通信チャネルを作成するために GCDAsyncUdpPacket.m および .h ファイルを使用してみました。しかし、それを介して、1 行のメッセージしか送信できませんでした。画像などのファイル全体を送信する必要があります。

私はこのプラットフォームにまったく慣れていないので、どんな助けでも大歓迎です。

4

1 に答える 1

0

UDPはエラーチェックされたプロトコルではないため、UDPソケットにバイナリデータを詰め込むだけでは信頼性が低くなります。一部のパケットがドロップされたり、遠端で順不同で到着したりする可能性があるためです。

エラーがチェックされ、順序が正しく、信頼できるデータを確保する場合は、TCPソケットを開いて、その方法で送信します。

IOSでは、NSStreamクラスを使用してこれを行うことができますが、iPhoneアプリで使用できるさまざまな方法を理解するには、多くのサンプルコードを確認する必要があります。これを適切に実装するには、実行ループ(NSRunLoop)がどのように機能し、Cocoaで委任がどのように機能するかを理解する必要があります。

私の場合、これをすべて回避し、別のNSThreadでネットワークタスクを開始し、UNIXのsocket()、connect()、およびsend()プリミティブを使用してTCPソケットを開く傾向があります。これらを機能させると、他のコードにカットアンドペースト(またはパーソナルコードライブラリに配置)できるため、その方法を覚えておく必要はありません。:-)

BSDプリミティブsocket()、accept()、bind()、connect()、send()、およびrecv()のサンプルコードはたくさんあります。

于 2012-06-22T04:27:07.457 に答える