3

IPを指定して、2つのデバイス間で基本的なメッセージペーシングを実装しようとしています。1つのデバイスがリスニングソケットに次のようにリッスンするように指示した場合:

UInt16 port = 59647;
NSError *err = nil;
[socket acceptOnPort:port error:&err];

デリゲートは正しく呼び出され、didAcceptNewSocket接続しているIP:Portに新しいソケットを返す必要があります。ただし、これを実行していることがわかる限り、新しいソケットはを呼び出す必要がありますがdidConnectToHost、私が知る限り、そうではありません。

didConnectToHost接続が確立された後、ソケットとの接続を開始するデバイスが適切に呼び出すため、は正しく実装されます。

私はいくつかのことをdidAcceptNewSocket除いて何もしておらずNSLogs、古いリスニングソケットを新しいものに設定しています(後で必要ではなく、前に別の変数に割り当てても何も変更されませんでした)。

リスニング側の新しいソケットがこのデリゲートを呼び出さないようにするにはどうすればよいですか?

4

1 に答える 1

1

クライアントとサーバーを扱っているのでsocket:didConnectToHost:port:、ホストに接続するのはクライアントであるため、クライアントのみがデリゲートメソッドを呼び出すことを理解することが重要です(その逆ではありません)。

サーバーではsocket:didAcceptNewSocket:、最初の引数としてリスニングソケットを使用してdelegateメソッドが呼び出されます。

于 2013-04-11T09:54:22.347 に答える