0

シンプルなアプリを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: 彼らは別のネットワークにいる必要があります

4

1 に答える 1

0

セル通知に GCM を使用し、その後サーバー プルを作成することをお勧めします。それは確かにはるかに高速であり、単純な REST サーバーを使用してデータを提供できます。

PC をサーバーにし、ドロイドをクライアントにする必要があります。

于 2013-07-04T19:55:22.507 に答える