我使用了这个网站上关于 Android 中套接字编程的代码。一部手机是,client
而另一部充当server
。我准确地复制/粘贴了代码,并将server
代码放在一部手机上,另一部手机client
上。两部手机都连接到同一个wifi路由器。
但是,我什至无法从客户端向服务器电话发送简单的消息。我得到timeouts
和错误java.net.ConnectException: failed to connect to /10.0.2.15 (port 8080): connect failed: EHOSTUNREACH (No route to host)
我读到其他一些人已成功使用此代码。这就是为什么我认为它与wifi连接有关。我尝试了另外两个路由器并遇到了同样的问题。我还尝试了设置Port forwarding
(这是某些路由器上的设置,您告诉路由器您正在使用某个端口,例如 8080,您需要这样做才能使套接字编程工作)。但是,两个路由器都没有英语语言设置。所以我找不到port forwarding
设置在哪里。如果需要让这个东西正常工作,我可以得到一个具有英语语言设置的新路由器。
我的问题是:您认为port forewarding
设置很可能是问题所在,还是我忽略了其他问题?任何将我指向正确方向的想法将不胜感激。
这是完整的 Logcat 输出:
01-22 18:37:40.100: E/ClientActivity(19568): C: Error
01-22 18:37:40.100: E/ClientActivity(19568): java.net.ConnectException: failed to connect to /10.0.2.15 (port 8080): connect failed: EHOSTUNREACH (No route to host)
01-22 18:37:40.100: E/ClientActivity(19568): at libcore.io.IoBridge.connect(IoBridge.java:114)
01-22 18:37:40.100: E/ClientActivity(19568): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
01-22 18:37:40.100: E/ClientActivity(19568): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
01-22 18:37:40.100: E/ClientActivity(19568): at java.net.Socket.startupSocket(Socket.java:566)
01-22 18:37:40.100: E/ClientActivity(19568): at java.net.Socket.<init>(Socket.java:225)
01-22 18:37:40.100: E/ClientActivity(19568): at com.example.client.ClientActivity$ClientThread.run(ClientActivity.java:60)
01-22 18:37:40.100: E/ClientActivity(19568): at java.lang.Thread.run(Thread.java:856)
01-22 18:37:40.100: E/ClientActivity(19568): Caused by: libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host)
01-22 18:37:40.100: E/ClientActivity(19568): at libcore.io.Posix.connect(Native Method)
01-22 18:37:40.100: E/ClientActivity(19568): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
01-22 18:37:40.100: E/ClientActivity(19568): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
01-22 18:37:40.100: E/ClientActivity(19568): at libcore.io.IoBridge.connect(IoBridge.java:112)