私はクライアント・サーバー・アプリケーションをプログラミングしています。私のクライアントはアンドロイド・フォンで、私のサーバーは私のラップトップです。ソケット携帯電話が3Gに接続されているときにタイムアウトし、Wifiのときに動作します。なぜですか?
だから私の問題は、コードのこの1行です:
Socket connectionToServerSocket = new Socket(hostName, portNumber);
完全に罰金作品私の携帯電話は私の自宅の無線LAN接続でインターネットに接続し、単にタイムアウトに3Gを介して接続(携帯電話プロバイダ)例えばそれはしばらくの間ブロックし、タイムアウト例外をスローします。
いくつかのアプリは非常に一般的なポート、たとえばポート#80で接続されていますが、ポート番号(およびサーバーが受信しているポート)を切り替えると、 〜80は助けにならない(例えばそれはまだタイムアウトします)、私は多くの異なるポートを試しました - 同じ結果。
DNSは正常に動作します(たとえば、hostNameに与えた論理文字列が正しいIPに変換されます)が、サーバには何も送信されません。 私は迷っています。どうすればそれをチェックして解決できますか?
ラップトップのIPは公開されていますか(ネットワークの外部からアクセスできるなど)。携帯電話の3Gネットワークから到達できないプライベートIPが割り当てられているようです。ここに表示されているIPが、ソケットのホストIPとして使用しているIPと一致しているかどうかを確認してください:https://www.whatismyip.com/https://www.whatismyip.com/ –