0

Stream Programming Guideに従って を使用して TCP クライアント接続を開くことにより、 と のペア ( にブリッジされた通話料無料)をNSInputStream作成NSOutputStreamできることを知っています。CFReadStreamCFWriteStreamCFStreamCreatePairWithSocketToHost

ポートをリッスンし、接続をとのペアとして受け入れるTCPサーバーを作成するにはどうすればよいでしょうか?NSInputStreamNSOutputStream

4

2 に答える 2

1

RemoteCurrency サンプル プロジェクトは、 QServer.m (以前は TCPServer.m として知られていた)でこの例を提供します。サンプルコードは、実際には Bonjour 広告を設定するためのものですが、単純な TCP サーバーの場合、その部分は除外できます。

を呼び出して独自の受け入れコールバックでソケットを作成し、を呼び出してポートをバインドしてリッスンし、 を呼び出しCFSocketCreateから受け入れコールバックCFSocketSetAddress取得を開始します。CFSocketCreateRunLoopSourceCFRunLoopAddSource

次に、accept コールバックで、 を使用して接続ハンドルから作成NSInputStream/NSOutputStreamペアリングしCFStreamCreatePairWithSocket、入力ストリームのデリゲートを設定して、を呼び出してrecvコールバックの受信を開始しscheduleInRunLoop:forMode:open両方のストリームでそれらの使用を開始します。

NSInputStreamおよびNSOutputStream抽象化を使用すると(新しいスレッドを作成し、標準の UNIX 関数socketbindlistenaccept、を呼び出すのでsendrecvなく)、OSX 上の残りの実行ループ ベースの API と同じ NSRunLoop でネットワーク イベントを簡単に受信できます。

于 2014-02-07T22:59:44.677 に答える