【发布时间】:2011-03-13 18:44:19
【问题描述】:
我一直在尝试通过 TCP 套接字连接两个 Android 设备 (2.1)。 代码的关键部分:
服务器: ServerSocket serverSocket = new ServerSocket(SERVERPORT);
客户: Socket socket = new Socket(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协议的过程中至关重要。
谁能给我一些建议?
【问题讨论】:
-
程序运行在两部手机上,真实IP是什么意思?
-
我只是想说问题不在于我在真实设备上使用 10.0.2.15 IP