2013-02-20 81 views
0

我实现了一个TCP客户端,目前它工作正常,至少如果我尝试连接到REMOTE服务器。如果该服务器是在我的本地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后它将工作,设备将连接到我的本地服务器。

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

回答

2

您尚未发现本地网络的任何发现,因此设备不知道服务器位于何处。答案出在以下错误: “没有路由到主机”

先发现网络以更新MAC表。通常情况下,你可以检查MAC是否已经知道(在ARP表中),如果没有,首先做一个ARP请求。

当您第一次从服务器ping时它的工作原理:移动设备(在ARP表或MAC表中)知道MAC。

+0

感谢您的回答,对于像我这样的网络noob听起来完全合理。正在使用网络服务发现http://developer.android.com/training/connect-devices-wirelessly/nsd.html#discover要走的路? – 2013-02-21 14:38:37

+0

该描述表明它将监听在网络上广播的服务。如果你只是想知道什么是广播,这很好。这里是一个用于andriod的socket编程教程:http://www.edumobile.org/android/android-development/socket-programming/ – Bulki 2013-02-21 22:10:14