2011-11-15 17 views
0

私は以下のコードをテストしました。エミュレータでは動作していましたが、Android Mobileでは動作しませんでした。私は何か設定をする必要がありますか?私を助けてください。 ありがとうございます。データの送信中にAndroidソケットが例外を受け取る

try { 
    Socket socket = new Socket("192.168.0.54", 9083); 
    PrintWriter out = new PrintWriter(new BufferedWriter(
      new OutputStreamWriter(socket.getOutputStream())), true); 
    out.println("Testing"); 

    InputStream inputStream = socket.getInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(
      inputStream)); 
    String readObject = reader.readLine(); 
    System.out.println(readObject); 
} 
catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

時々、ip/addressに問題がある可能性があります。 –

+0

logcatが何か変わったことを確認していないか確認してください。 –

+0

いいえ、logcatには何もありません。しかし私は私のキャッチブロック "java.net.SocketException:接続によってリセットされた例外を持っている" – Nagaraju

答えて

0

「ピアによる接続のリセットは、」あなたがそれを読んでいた間、あなたの携帯電話とサーバ間の誰か(包括的)が接続を閉じたことを意味します。

まず、サーバーが何かを受信して​​送信するかどうかを確認します。そうでない場合、携帯電話とサーバーの間の誰かが転送をブロックしています。あなたが企業のWiFiを利用している場合、サーバー上にファイアウォールが存在する可能性があります。

投稿にスタ​​ックトレースを追加する必要があります。それがなければ、私たちの答えはちょっと推測だけです...

編集:IPアドレス192.168.x.xは内部ネットワークを指しています。 WiFi/3Gから内部ネットワークにアクセスできますか?

+0

-1。それはそれを意味するものではありません。誰かが*接続をリセットすることを意味します。それを閉じるだけでストリームの状態が終了します。 – EJP

+0

接続をリセットすることはまさにそれを意味します。リセットは、接続が制御可能に閉じられたときに実行されるハンドシェイクを伴わない。ファイアウォールは、不要な接続を処理するときにトラフィックを削減するため、トラフィックをブロックするときに、リセットの代わりにリセットを使用することが知られています。 – Torben

+0

リセットとクローズは2つの異なる操作です。あなたがリセットを意味した場合は、あなたの答えにそう言っていたはずです。 – EJP

0

'ピアによる接続リセット'は、通常、もう一方の端で既に閉じられている接続に書き込むことによって発生します。つまり、アプリケーションプロトコルエラーです。この書き込みには表示されませんが、その後のI/O操作では表示されません。

関連する問題