從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
如何定義你的套接字?請張貼您的代碼。 – 2014-12-04 11:27:28
@MohammadRahchamani我已經更新了代碼,現在請檢查... – 2014-12-04 11:36:25
什麼是您的服務器的socket.io版本以及您正在使用哪個庫用於Android客戶端? – 2014-12-04 11:38:29