Я пытаюсь прослушивать порт с помощью 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, IP-адресу WiFi LAN устройства с SocketInetAddress
и InetAddress.getByName
. Кажется, ничего не работает.
Когда я пытаюсь подключиться к порту с компьютера в том же WiFi (я пробовал и netcat, и Java Socket.connect()
), все, что я вижу в Wireshark, это запрос ARP:
Who has [phone's LAN address]? Tell [computer LAN address].
Этот запрос повторяется до истечения времени ожидания.
Я пробовал обратный путь, установив ServerSocket на компьютере и подключившись к этому порту с телефона, это работает очень хорошо.
Мой тестовый телефон - Samsung Spica i5700 с пользовательским ПЗУ.
Есть идеи?
Edit:
Код прост как это:
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