Я пытаюсь слушать порт, используя ServerSocket
на устройстве Android. Я хочу иметь возможность подключиться к этому порту через Wi-Fi, используя компьютер в той же сети.Невозможно использовать ServerSocket на Android
я не получаю исключение при выполнении привязки к порту, однако, когда я проверяю NETSTAT он говорит:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 (null):4040 (null):* LISTEN
Я пробовал множество способов связывания его на локальный, 0.0.0.0, LAN IP WiFi адрес устройства с SocketInetAddress
и InetAddress.getByName
. Ничто не работает.
При попытке подключения к порту с компьютера в той же Wi-Fi (я пробовал как Netcat и в Java Socket.connect()
), все, что я могу видеть в Wireshark является запрос ARP:
Who has [phone's LAN address]? Tell [computer LAN address].
Это запрос повторяется до истечения времени ожидания.
Я пробовал обратный путь, установив ServerSocket на компьютер и подключившись к этому порту с телефона, который работает очень хорошо.
Мой тестовый телефон Samsung Spica i5700 с пользовательским ROM.
Любые идеи?
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
Можете ли вы показать код? Вы устанавливаете правильное разрешение в файле манифеста? – Flo
Я обновил вопрос с помощью некоторого кода. Да, я разрешил ИНТЕРНЕТ в манифесте. – shuwo
'ServerSocket.accept()' не может вернуть значение null. – EJP