0

我实现了一个 TCP 客户端,到目前为止它工作正常,至少如果我尝试连接到远程服务器。如果该服务器在我的本地 wifi 网络中,我总是会得到

02-20 14:09:04.400: W/System.err(29562): java.net.SocketException: failed to connect to /xxx.xxx.xxx.xxx (port xyz) after 5000ms: isConnected failed: EHOSTUNREACH (No route to host)

但!!如果我让本地服务器 ping 我的 android 设备,在它被 ping 之后它将工作并且设备将连接到我的本地服务器。

这种行为的任何已知原因?我不知道应该从哪里开始寻找解决方案。

4

1 回答 1

2

您尚未对本地网络进行任何发现,因此设备不知道服务器的位置。答案在于错误:“No route to host”

首先进行网络发现以更新 MAC 表。通常您可以检查 MAC 是否已知(在 ARP 表中),如果不知道,请先执行 ARP 请求。

首次从服务器 ping 时它起作用的原因:然后移动设备知道 MAC(在 ARP 表或 MAC 表中)。

于 2013-02-20T14:23:24.603 回答