0

GCDAsyncSocket (7.5.0) を使用した非常に単純な TCP クライアント/サーバーの実装がありNSNetService、サービス検出に使用しています。これはローカルのwifiネットワークでのみ使用されており、2年間問題なく動作します(私はGCDAsyncSocketを適切に使用しています)。

...クライアントとサーバーが接続する Wi-Fi ネットワークを提供するアクセス ポイントとして 3 番目の iOS デバイスを使用するまでは。

3 番目の iOS デバイスが Bluetooth 経由で接続を共有することにより、クライアントとサーバーの両方に接続する場合も同様です。

サービスの検出は問題ありませんが、IP アドレスとポートを取得すると、接続できず、次のエラーが発生します。

Error Domain=NSPOSIXErrorDomain Code=64 "Host is down" UserInfo={NSLocalizedDescription=Host is down, NSLocalizedFailureReason=Error in connect() function}

IPv4 と IPv6 に制限してみました (どちらもサービス ディスカバリーによって提供されます)。また、GCDAsyncSocket リポジトリの ipv6 git ブランチとさまざまなパラメーターを使用してみました。

私の主な質問は次のとおりです。Wi-FiまたはBluetooth iOSアクセスポイントを介して単純なTCP接続を確立できますか?

NSNetService2 つ目の質問は、単純な TCP 接続ではなく、サービス検出が機能するのはなぜですか? プロトコルが比較できないことはわかっていますが、それでも混乱します。

4

1 に答える 1

1

私には、あなたの問題はセルラー ネットワークからの接続にあるように思えます。セル ネットワークに接続すると、IP アドレスに問題が発生します。Cocoaasyncsocket Github ページからこのディスカッションを参照してください。

于 2016-10-15T04:19:15.437 に答える