Wi-Fi に接続しているときに動作する Android アプリがありますが、4G 経由で接続しているときは動作しません。明確にするために、サーバーが接続されているネットワークではなく、wifiインターネット接続に接続しているときに機能します。私のマニフェストファイルには以下が含まれています:
<uses-permission android:name="android.permission.INTERNET" />
問題のある行は次のとおりです。
new Socket(InetAddress.getByName("mydomain.com"), XXXX);
ハングしてから、次のエラーが表示されます。
java.net.ConnectException: failed to connect to mydomain.com/XXX.XXX.XXX.XXX (port XXXX): connect failed: ETIMEDOUT (Connection timed out)
logcatに出力しました。でIPアドレスを見つけることに成功したので、DNSの問題ではないと思います
System.out.println("Server IP:" + InetAddress.getByName("mydomain.com").toString());
これをSamsung S III電話で実行しています。繰り返しますが、wifi に接続している場合やエミュレーターで実行している場合は正常に動作しますが、インターネット接続が 4G の場合、クライアントのソケットがタイムアウトします。なぜこれが起こるのでしょうか?