2011-11-15 71 views
0

我測試了下面的代碼。它在模擬器中工作,但不適用於Android Mobile。我需要做任何設置嗎?請幫幫我。 謝謝。Android Socket在發送數據時發生異常

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的問題 – 2011-11-15 13:02:24

+0

檢查logcat是否有什麼奇怪的說法 – 2011-11-15 13:03:53

+0

不,logcat中沒有任何東西。但我在我的catch塊中得到異常「java.net.SocketException:由同級重置連接」 – Nagaraju

回答

0

「連接被對方​​復位」意味着你的手機和服務器(含)之間的人關閉了連接,而你讀它。

首先檢查服務器是否收到和發送任何東西。如果沒有,那麼手機和服務器之間的某個人將阻止該傳輸。如果你使用的是公司WiFi,可能有防火牆保護服務器等。如果在3G上,肯定有一個。

您應該將堆棧跟蹤添加到您的帖子。沒有它,我們的答案只是猜測...

編輯:IP地址192.168.x.x指向一個內部網絡。你確定你可以從WiFi/3G訪問內部網絡嗎?

+0

-1。這並不意味着這一點。這意味着有人*重置*連接。關閉它會導致流狀態的結束。 – EJP

+0

重置連接確實意味着這一點。重置只是不涉及可控地關閉連接時執行的握手。已知防火牆在阻塞流量時使用重置而不是關閉,因爲它在處理不需要的連接時會減少流量。 – Torben

+0

重置和關閉是兩種不同的操作。如果你的意思是重置,你應該在你的答案中這麼說。 – EJP

0

'通過對等方重置連接'通常是由寫入已由另一端關閉的連接引起的。換句話說,應用程序協議錯誤。它不會在寫入時顯示,而是在隨後的I/O操作中顯示。

相關問題