2014-12-04 2 views
0

android socket programming에서 node.js에 연결하는 동안 오류가 발생했습니다. 나는 또 다시 발생하는 서버 만 아웃 시간에 연결하는 socket.io를 사용하고, 어떤 도움을Error 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

어떻게 소켓을 정의합니까? 그 부분에 대한 코드를 게시하십시오. –

+0

@MohammadRahchamani 지금 업데이트 된 코드를 확인하십시오 ... –

+0

서버의 socket.io 버전은 무엇이며 어떤 라이브러리를 Android 클라이언트에 사용하고 있습니까? –

답변

1

문제는 클라이언트 라이브러리가 socket.io 0.9.x를 지원하고 서버가 socket.io v1을 사용하고 0.9에서 1까지 socket.io 라이브러리에서 변경된 핸드 셰이크 프로토콜입니다. 서버의 socket.io를 0.9로 다운 그레이드 해보십시오. 아무 문제없이 작동하거나 socket.io v1.0.x를 지원하는 socket.io-client을 사용할 수 있습니다.

+0

대신 클라이언트 라이브러리를 업그레이드하는 대신 내 서비스를 다운 그레이드하는 방법을 제안 해주십시오. –

+0

@Aman 내 업데이트 된 답변보기 및 귀하의 문제를 해결하는 데 도움이 있다면 그것을 받아 :) –

+0

Ohk 내가 먼저 시도하자 –

관련 문제