Почему я не могу создать сокет 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, чтобы попытаться подключиться к серверу.

Другие вопросы по тегам