Соединение через TCP с 0.0.0.0 по Wi-Fi, когда ПК слушателя имеет активную Wi-Fi и Ethernet не работает - PullRequest
0 голосов
/ 23 октября 2019

Я создаю TCP-соединение с устройства по Wi-Fi на компьютер, который прослушивает порт 0.0.0.0:44440.

Когда я работаю только по Wi-Fi, устройство можетподключиться без проблем. Когда я включаю / подключаю Ethernet, слушатель никогда не принимает запрос подключения устройства. (Wi-Fi все еще подключен в течение этого процесса. Проверено ipconfig)

Я использую C ++, и команда выглядит так:

handle = (int)accept(listening_socket->handle, (struct sockaddr *)&address, &addrlen);

Команда получает дескриптор, когда устройство подключается, если оба подключены только к Wi-Fi, но продолжает блокировать, если прослушиватель подключен как к Ethernet, так и к Wi-Fi.

0.0.0.0 должен быть неоднозначным по интерфейсу, поэтомуон должен принимать соединения как от Ethernet (192.168.xx), так и от Wi-Fi (10.161.xx), но, похоже, «подключается» к интерфейсу, обеспечивающему лучший интернет. При проверке с использованием «netstat -an», активируется прослушиватель 0.0.0.0:44440, использующий каждый метод.

Кто-нибудь является профессионалом в сети и знает, почему наличие нескольких работающих интерфейсов портит это?

.

Дополнительная информация

Я сделал много проверок, чтобы убедиться, что Wi-Fi и Ethernet включены. Я запускаю широковещательную передачу UDP по обоим интерфейсам, которая сообщает устройствам, что нужно подключиться к локальному компьютеру. Таким образом, трансляция содержит сообщение «192.168.xx: 44440» для устройств, работающих в локальной сети, и «10.161.xx: 44440» для устройств, работающих в Wi-Fi. Устройство получает это сообщение и затем пытается сформировать TCP-соединение на «10.161.xx: 44440». Когда компьютер подключен только через Wi-Fi, подключение работает следующим образом. Когда он подключен через оба устройства, прослушиватель, работающий через порт 44440, никогда не обнаруживает, когда устройство подключается. Он по-прежнему будет подключать локальные программы, работающие на той же машине, с любого IP-адреса.

Также обратите внимание, что мой Ethernet не является той же сетью, что и мой Wi-Fi (по соображениям безопасности). Таким образом, каждая сеть имеет отдельные свойства

1 Ответ

0 голосов
/ 02 ноября 2019

Когда я подключил Ethernet, он переустанавливал мой Wi-Fi на общедоступный Wi-Fi, а не на частный. Это не позволило TCP-соединение, потому что совместное использование было отключено. Хотя разрешено соединение UDP, что мне интересно. Поэтому, если вы столкнетесь с этим, убедитесь, что на вашем Wi-Fi включен общий доступ к сети!

...