NSXPCConnection でソケットを使用すると問題が発生します。
基本的に、メイン プロセスと実行中のヘルパー プロセスがあり、NSXPCConnection を介して確立されます。そのヘルパー プロセスは、サーバーとして機能し、外部接続を受信する特定のポート (111 など) をリッスンする必要があります。
ヘルパー プロセスは、Apple が提供するTCPServer
ヘルパー クラス (ラッパー アラウンド) を使用してリッスン ソケットを開きます。CFSocket
ここにあるコード:
https://code.google.com/p/iphone-remotepad/source/browse/trunk/RemotePad/TCPServer.h?r=238
でソケットが正常に開かれました- (BOOL)start:(NSError **)error
。
外部クライアントは 111 ポートで確立できます。(を介して端末でテストしますtelnet localhost 111
)。
ただし、ヘルパー プロセスは TCPServer コールバックを受け取りませんTCPServerAcceptCallBack
。
ヘルパー プロセスでcom.apple.security.network.client
資格が有効になっています。
また、ヘルパー プロセスの代わりにメイン アプリで TCPServer を実行し、ポート 111 でサーバーをセットアップし、ポート 111 に接続しようとすると、コールバックが発生します。
ヘルパー プロセスがソケット コールバックを受信しない理由について何か考えはありますか? XPC 関連の問題?