2014-12-04 24 views
0

從android套接字編程連接到node.js時出錯。我使用socket.io用於連接到服務器,但超時被一次又一次地發生,任何幫助將不勝感激錯誤java.net.SocketTimeoutException

代碼

SocketIO socket = new SocketIO("http://10.10.10.125:1337"); \t \t 
 
    \t socket.connect 
 
    \t \t \t (
 
    \t \t \t \t \t new IOCallback(){ 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void onError(SocketIOException socketIOException) { 
 
    \t \t \t \t \t \t \t System.out.println("an Error occured"); 
 
    \t \t \t \t \t \t \t socketIOException.printStackTrace(); 
 
    \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void onDisconnect() { 
 
    \t \t \t \t \t \t \t System.out.println("Connection terminated."); 
 
    \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void onConnect() { 
 
    \t \t \t \t \t \t \t System.out.println("Connection established"); 
 
    \t \t \t \t \t \t \t //socket.send("Hello Server!"); 
 
    \t \t \t \t \t \t \t //System.out.println("send msg to server"); 
 
    \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void onMessage(String arg0, 
 
    \t \t \t \t \t \t \t \t IOAcknowledge arg1) { 
 
    \t \t \t \t \t \t \t // TODO Auto-generated method stub 
 
    \t \t \t \t \t \t \t System.out.println("Server said: " + arg0); 
 
    \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void onMessage(JSONObject arg0, 
 
    \t \t \t \t \t \t \t \t IOAcknowledge arg1) { 
 
    \t \t \t \t \t \t \t // TODO Auto-generated method stub 
 
    \t \t \t \t \t \t \t try { 
 
    \t \t \t \t \t \t \t \t System.out.println("Server said:" + arg0.toString(2)); 
 
    \t \t \t \t \t \t \t } catch (JSONException e) { 
 
    \t \t \t \t \t \t \t \t e.printStackTrace(); 
 
    \t \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t } 
 
    \t \t \t \t \t \t @Override 
 
    \t \t \t \t \t \t public void on(String arg0, IOAcknowledge arg1, 
 
    \t \t \t \t \t \t \t \t Object... arg2) { 
 
    \t \t \t \t \t \t \t // TODO Auto-generated method stub 
 
    \t \t \t \t \t \t \t System.out.println("on...."); 
 
    \t \t \t \t \t \t } \t 
 

 
    \t \t \t \t \t } 
 
    \t \t \t \t \t); 
 
    \t \t 
 

 
    \t \t } catch (MalformedURLException e1) { 
 
    \t \t \t e1.printStackTrace(); 
 
    \t \t }

錯誤

12-04 16:30:30.510: W/System.err(8986): io.socket.SocketIOException: Error while handshaking 
 
12-04 16:30:30.510: W/System.err(8986): \t at io.socket.IOConnection.handshake(IOConnection.java:322) 
 
12-04 16:30:30.510: W/System.err(8986): \t at io.socket.IOConnection.access$600(IOConnection.java:39) 
 
12-04 16:30:30.510: W/System.err(8986): \t at io.socket.IOConnection$ConnectThread.run(IOConnection.java:199) 
 
12-04 16:30:30.510: W/System.err(8986): Caused by: java.net.SocketTimeoutException 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.net.PlainSocketImpl.read(PlainSocketImpl.java:491) 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:46) 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:240) 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.io.InputStream.read(InputStream.java:163) 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:142) 
 
12-04 16:30:30.510: W/System.err(8986): \t at java.io.BufferedInputStream.read(BufferedInputStream.java:227) 
 
12-04 16:30:30.510: W/System.err(8986): \t at libcore.io.Streams.readAsciiLine(Streams.java:201) 
 
12-04 16:30:30.510: W/System.err(8986): \t at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:544) 
 
12-04 16:30:30.510: W/System.err(8986): \t at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:784) 
 
12-04 16:30:30.510: W/System.err(8986): \t at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274) 
 
12-04 16:30:30.510: W/System.err(8986): \t at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 
 
12-04 16:30:30.510: W/System.err(8986): \t at io.socket.IOConnection.handshake(IOConnection.java:313) 
 
12-04 16:30:30.510: W/System.err(8986): \t ... 2 more

+0

如何定義你的套接字?請張貼您的代碼。 – 2014-12-04 11:27:28

+0

@MohammadRahchamani我已經更新了代碼,現在請檢查... – 2014-12-04 11:36:25

+0

什麼是您的服務器的socket.io版本以及您正在使用哪個庫用於Android客戶端? – 2014-12-04 11:38:29

回答

1

問題是您的客戶端庫支持socket.io 0.9.x,並且您的服務器使用的是socket.io v1,並且從0.9到1,socket.io庫中的握手協議已更改。嘗試降級你的服務器的socket.io到0.9,它將工作沒有任何問題,或者你可以使用socket.io-client,支持socket.io v1.0.x

+0

您可以請任何方式來升級客戶端庫,而不是降級我的服務器。 – 2014-12-04 11:54:44

+0

@Aman看到我更新的答案,並接受它,如果它幫助你解決你的問題:) – 2014-12-04 11:57:11

+0

Ohk讓我先試試 – 2014-12-04 11:59:44

相關問題