シンプルなアプリを1つ作成しようとしています。携帯電話をサーバー ソケットにしたいのですが、PC からメッセージを送信しようとしています。この場合、PC がクライアントです。
それらが同じネットワークにある場合は正常に動作しますが、携帯電話を 3G ネットワークに接続すると、PC で「接続がタイムアウトしました」というエラーが表示されます。
no-ip のホストを使用しています (両方の状況で)。たとえば、「telnet mycellphonehost.org 8080」を実行すると、問題なく接続できます。正しい外部 IP が得られるため、no-ip ホストは正常に動作していると思います。
ポートが開いているかどうかのテストには、FIREBIND というアプリも使用します。結果は次のとおりです。
私はすでにこの主題に関する多くの質問、同様の問題を読んでいます...しかし、この問題を解決するのに役立つものは何もありません。誰かが私を助けてくれることを願っています。前もって感謝します!
コードに従ってください:
Android サーバー
try{ ServerSocket server = new ServerSocket(port); Socket s = server.accept(); BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(input.readLine()); input.close(); s.close(); server.close(); } catch(IOException e){ System.out.println("ERROR: " + e.getMessage()); }
PC クライアント
try{ Socket s = new Socket("myhostfromno-ip.org",port); PrintStream output = new PrintStream(s.getOutputStream()); output.println("TEST MESSAGE"); output.flush(); s.close(); } catch(IOException e){ System.out.println("ERROR: " + e.getMessage()); }
PS: 彼らは別のネットワークにいる必要があります