通过TCP套接字连接两个Android设备

时间:2010-07-09 09:09:38

标签: android sockets tcp

我一直在尝试通过TCP套接字连接两个Android设备(2.1)。 代码的重要部分:

服务器: ServerSocket serverSocket = new ServerSocket(SERVERPORT);

客户端: 套接字套接字=新套接字(serverAddr,SERVERPORT);

奇怪的是,如果客户端是模拟器,我可以使它工作,但如果在真实设备上运行它们,相同的代码将失败。 客户端的失败是:

 
java.net.SocketException: No route to host
     at org.apache.harmony.luni.platform.OSNetworkSystem.connectSocketImpl(Native
 Method)
     at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.
java:114)
     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:
245)
     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:
220)
     at java.net.Socket.startupSocket(Socket.java:780)
     at java.net.Socket.(Socket.java:314)

我也尝试过使用WIFI和移动网络,两次都在同一个子网中,给予INTERNET权限,服务器通过真正的192.168 ... IP进行寻址。
我打算用setCustomSocketImplFactory()更改套接字实现。
在向Android实施MSRP协议的过程中,这个问题至关重要 谁能给我一些建议?

1 个答案:

答案 0 :(得分:1)

很少有手机具有可公共路由的IP地址。大多数人都支持NAT。

您可能需要考虑使用C2DM:

http://code.google.com/android/c2dm/