2015-06-26 76 views
-1

我想使用Socket.io與pc和Android進行通信。代碼:Android Node.js Socket.io總是連接成功

http://socket.io/blog/native-socket-io-and-android/

public class MainActivity extends ActionBarActivity { 

private Boolean socketConnection; 
TextView tw; 
Socket mSocket; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    tw = (TextView)findViewById(R.id.textView); 

    try { 
     mSocket = IO.socket("http://localhost:3000"); 
     mSocket.connect(); 
     socketConnection = true; 
     tw.setText("Yes"); 
    }catch(URISyntaxException ex) { 
     socketConnection = false; 
     tw.setText("No"); 
    } 

} 

當我調試的應用;服務器應用程序儘管關閉,客戶端說連接成功。而當我打開服務器應用程序時,服務器應用程序無法看到客戶端。

+0

但是,您正在連接到Android設備上的'localhost:3000', Android設備上的某個地方 – Patosai

+0

聽起來像所有事情都按預期工作。你的問題是什麼? – Anthon

+0

因爲我在PC上使用android模擬器。 @Patosai – ibrahimsn

回答

2

@Patosai指出你的代碼存在問題,那就是你連接到localhost:3000。這意味着您正嘗試連接到運行應用程序的設備(Android手機或模擬器)。由於設備始終可以與自己連接,因此總會說它已連接。

假設您連接到與您的PC相同的網絡,您將需要找到您的PC的IP地址和您選擇進行通信的端口。例如,如果您確定您的PC的IP爲123.456.2.1,並且您在Socket.IO代碼中的端口爲4000,則可以編寫mSocket = IO.socket("http://123.456.2.1:4000")