Почему я не могу создать сокет TCP с устройства Android на ПК
Я пытаюсь подключить свое приложение Android к настольному серверу. Проблема в том, что когда я пытаюсь создать локальную сеть через портативную точку доступа Wi-Fi на своем смартфоне, все работает нормально, но когда я подключаю ПК и телефон к маршрутизатору, у меня возникает TimeOutException, создающий сокет в приложении Android. С другой стороны, когда я подключаю настольный клиент к настольному серверу через маршрутизатор, он тоже работает нормально, поэтому проблема возникает только тогда, когда я пытаюсь подключить мобильный клиент к настольному серверу через маршрутизатор.
Код клиента (Java):
Socket socket = new Socket();
socket.connect(new InetSocketAddress(ip, port), 1000); // TimeOutException
Код сервера (C++/Qt):
QTcpServer m_tcp_server;
// ...
m_tcp_server->listen(QHostAddress::Any, m_port);
IP-адрес и порт верны (100%)
UPD:
Спасибо вам, ребята.
Это была просто проблема с роутером. Я проверил на другом, и нет проблем
2 ответа
У меня была такая же проблема. В моем случае я создал сокет сервера с неправильным IP-адресом. Сетевой диапазон точки доступа: 192.168.43.1~255.
Вам нужно создать серверный сокет с IP-адресом, который сделал точка доступа dhcp, например 192.168.43.11.
Я неправильно сделал серверный сокет с ip 192.168.0.22, это неправильно.
И ваше приложение для Android должно открыть с ним клиентский сокет.
Попробуйте проверить, какой ip назначен на андроиде pohone и есть ли у вас маршрут к ip целевого сервера.
Возможно, вы получите другой IP на Wi-Fi и другой IP по кабелю.
Также вы можете попробовать инструмент android net, чтобы попытаться подключиться к серверу.