2015-06-26 42 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")