2014-09-25 121 views
0

我建立的Windows PC和Android之間的AAP串行通信的Android越來越java.net.SocketTimeoutException

這裏有我跟着 使用portforwading方法步驟,

在命令提示符下執行:

adb forward tcp:6666 tcp:6767 

java代碼行

try { 
      server = new ServerSocket(); 
      server.setReuseAddress(true); 
      server.bind(new InetSocketAddress(6767)); 
      server.setSoTimeout(TIMEOUT * 1000); 

      // attempt to accept a connection 
      client = server.accept(); 
      Globals.socketIn = new Scanner(client.getInputStream()); 
      Globals.socketOut = new PrintWriter(client.getOutputStream(), 
        true); 

      // Globals.socketIn. 
     } catch (SocketTimeoutException e) { 
      // print out TIMEOUT 
      e.printStackTrace(); 
      connectionStatus = "Connection has timed out! Please try again"; 
      mHandler.post(showConnectionStatus); 
     } catch (IOException e) { 
      Log.e(TAG, "" + e); 
     } finally { 
      // close the server socket 
      try { 
       if (server != null) 
        server.close(); 
      } catch (IOException ec) { 
       Log.e(TAG, "Cannot close server socket" + ec); 
      } 
     } 

但得到超時異常。讓我知道它有什麼問題。

,這裏是我的logcat有效地處理它是定義一個連接超時,後來用嘗試捕捉block.Hope這將有助於處理它

09-25 16:57:59.299: W/System.err(20521): java.net.SocketTimeoutException 
09-25 16:57:59.299: W/System.err(20521): at       java.net.PlainSocketImpl.accept(PlainSocketImpl.java:108) 
09-25 16:57:59.304: W/System.err(20521): at java.net.ServerSocket.implAccept(ServerSocket.java:202) 
09-25 16:57:59.304: W/System.err(20521): at java.net.ServerSocket.accept(ServerSocket.java:127) 
09-25 16:57:59.304: W/System.err(20521): at com.example.usbpccomminication.SocketMain$1.run(SocketMain.java:90) 
09-25 16:57:59.304: W/System.err(20521): at java.lang.Thread.run(Thread.java:856) 
09-25 16:57:59.309: W/System.err(20521): Caused by: libcore.io.ErrnoException: accept failed: EAGAIN (Try again) 
09-25 16:57:59.309: W/System.err(20521): at libcore.io.Posix.accept(Native Method) 
09-25 16:57:59.309: W/System.err(20521): at libcore.io.BlockGuardOs.accept(BlockGuardOs.java:55) 
09-25 16:57:59.309: W/System.err(20521): at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:98) 
09-25 16:57:59.314: W/System.err(20521): ... 4 more 
+2

什麼問題?你設置一個超時,超時過期,你有異常。沒有人在超時間隔內連接。你期待他們? – EJP 2014-09-25 12:21:16

+0

這個問題已經被問和回答[這裏] [1] [1]:http://stackoverflow.com/questions/15608499/getting-java-net-sockettimeoutexception-connection-timed-out -in-android – 2014-09-25 12:38:18

+0

我也嘗試擴大或刪除時間間隔,但不工作.. – 2014-09-25 12:39:10

回答

0

的一種方式。

HttpUrlConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setConnectTimeout(30000); //set the timeout in milliseconds 

//This is the average time interval 
+0

我已經在使用try catch塊。 – 2014-09-25 12:36:30

-1

此問題已詢問。你可以從herehere得到一些幫助

+0

這兩個答案都沒有提供解決方案 – Skynet 2016-01-22 09:01:14

0

正如我早先有同樣的問題。這根本不是編程問題。僅當應用程序無法與服務器通信時纔會出現此錯誤。我,e客戶端使用的網絡與服務器連接的網絡不同。 (最有可能的wifi問題。重新啓動wifi調制解調器可能會解決這個問題或電話)