0

TCP クライアントを実装しましたが、少なくともリモート サーバーに接続しようとすると、これまでのところ正常に動作しています。そのサーバーがローカル Wi-Fi ネットワークにある場合、常に取得されます

02-20 14:09:04.400: W/System.err(29562): java.net.SocketException: failed to connect to /xxx.xxx.xxx.xxx (port xyz) after 5000ms: isConnected failed: EHOSTUNREACH (No route to host)

しかし!!LOCALサーバーがAndroidデバイスにpingを実行すると、pingが実行された後、デバイスがローカルサーバーに接続されます。

この動作の既知の理由はありますか? どこから解決策を探し始めるべきかわかりません。

4

1 に答える 1

2

ローカルネットワークの検出をまだ行っていないため、デバイスはサーバーがどこにあるかを認識していません。答えはエラーにあります:「ホストへのルートがありません」

ネットワークの検出を実行して、最初にMACテーブルを更新します。通常、MACが(ARPテーブルで)すでに認識されているかどうかを確認できます。認識されていない場合は、最初にARP要求を実行します。

サーバーから最初にpingを実行したときに機能する理由:MACは、モバイルデバイスによって(ARPテーブルまたはMACテーブルで)認識されます。

于 2013-02-20T14:23:24.603 に答える