2012-09-10 45 views
0

我正在使用由gottox編寫的Java的Socket.IO-Client for android應用程序。我試圖使用該庫將消息發送到由node.js製作的服務器並從中接收響應,但是我得到這些警告使用套接字時發生錯誤io

09-10 20:36:34.910: W/System.err(395): a.a.a.SocketIOException: Error while handshaking 
09-10 20:36:34.910: W/System.err(395): at a.a.a.IOConnection.handshake(IOConnection.java:305) 
09-10 20:36:34.910: W/System.err(395): at a.a.a.IOConnection.access$7(IOConnection.java:275) 
09-10 20:36:34.910: W/System.err(395): at a.a.a.IOConnection$ConnectThread.run(IOConnection.java:191) 
09-10 20:36:34.910: W/System.err(395): Caused by: java.net.SocketTimeoutException: Transport endpoint is not connected 
09-10 20:36:34.921: W/System.err(395): at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method) 
09-10 20:36:34.921: W/System.err(395): at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocket(OSNetworkSystem.java:130) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:246) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:533) 
09-10 20:36:34.931: W/System.err(395): at java.net.Socket.connect(Socket.java:1055) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909) 
09-10 20:36:34.931: W/System.err(395): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1152) 
09-10 20:36:34.931: W/System.err(395): at a.a.a.IOConnection.handshake(IOConnection.java:296) 

這裏是我的代碼

tv=(TextView)findViewById(R.id.textView1); 
     SocketIO socket=new SocketIO(); 
     try { 
      socket = new SocketIO("http://41.69.21.123:1333/"); 
     } catch (MalformedURLException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     socket.connect(new IOCallback() { 
      public void onMessage(JSONObject json, IOAcknowledge ack) { 
       try { 

        tv.setText(json.toString(2)); 
       // System.out.println("Server said:" + json.toString(2)); 


       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

      public void onMessage(String data, IOAcknowledge ack) { 
       //tv.setText(data); 
       //System.out.println("Server said: " + data); 
      } 

      public void onError(SocketIOException socketIOException) { 
       //tv.setText(socketIOException.toString()); 
       //System.out.println("an Error occured"); 

       socketIOException.printStackTrace(); 
      } 

      public void onDisconnect() { 
      // tv.setText("Connection terminated."); 
       //System.out.println("Connection terminated."); 
      } 

      public void onConnect() { 
      // tv.setText("Connection terminated."); 
       // System.out.println("Connection established"); 
      } 

      public void on(String event, IOAcknowledge ack, Object... args) { 
       //tv.setText("Server triggered event '" + event + "'"); 
       // System.out.println("Server triggered event '" + event + "'"); 
      } 
     }); 

     // This line is cached until the connection is establisched. 
     socket.send("Hello Server!"); 

    //  SocketIO socket=new SocketIO("http://127.0.0.1:3001/"); 

    } 

回答

0

要初始化插座兩次樣本。

此:

... 
SocketIO socket=new SocketIO(); 
try { 
    socket = new SocketIO("http://41.69.21.123:1333/"); 
... 

應該是這樣的:

... 
SocketIO socket; 
try { 
    socket = new SocketIO("http://41.69.21.123:1333/"); 
...