我正在尝试ServerSocket
在 Android 设备上使用的端口进行监听。我希望能够使用同一网络上的计算机通过 WiFi 连接到此端口。
将它绑定到端口时我没有例外,但是当我检查 netstat 时它说:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 (null):4040 (null):* LISTEN
我尝试了无数种方法将其绑定到 localhost、0.0.0.0、设备的 WiFi LAN IP 地址SocketInetAddress
和InetAddress.getByName
. 似乎没有任何效果。
当我尝试从同一 WiFi 中的计算机连接到端口时(我已经尝试过 netcat 和 Java 的Socket.connect()
),我在 Wireshark 中看到的只是一个 ARP 请求:
Who has [phone's LAN address]? Tell [computer LAN address].
此请求会不断重复,直到超时。
我尝试了相反的方法,通过在计算机上设置 ServerSocket 并从手机连接到该端口,效果很好。
我的测试手机是带有自定义 ROM 的三星 Spica i5700。
有任何想法吗?
编辑:代码很简单:
ServerSocket server = new ServerSocket();
server.setReuseAddr(true);
server.setTimeout(0);
server.bind(new InetSocketAddress(4040));
Socket client = null;
while((client = server.accept()) == null);
// Connected
enter code here
enter code here