无法让套接字编程在两部Android手机上工作,端口预置或其他原因



我使用了这个网站上的关于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)

那里的代码不会自行工作。您需要修改服务器和客户端上的 IP 地址以满足您的需求。尝试将当前服务器 IP 地址修改为本地地址 - "192.168.1.xxx"。在客户端中,您希望连接到与您作为服务器输入的 IP 地址相同的 IP 地址。无需更改端口转发的路由器设置。

最新更新