У меня очень раздражающая проблема. У меня есть приложение mIRC / Skype, то есть чат с текстом и голосом. Текст и чаты проходят через TCP и работают безупречно, в то время как UDP передает только записанные данные другим подключенным клиентам.
Между двумя клиентами в моей домашней сети передача звука работает нормально. Но по отношению к глобальному клиенту сервер не будет принимать пакеты от него, или он будет получать пакеты от сервера.
Вот пример:
Сервер использует сокет udp, в то время как клиент использует udpclient, но в любом случае результат тот же, и он также работает локально ..
сервер глобальный IP: 222.222.222.222
IP-адрес локального сервера: 192.168.2.3
порт сервера: 9999
client global ip: 111.111.111.111
IP-адрес клиента: 192.168.0.100
клиентский порт: 8888
Сервер
* связывает свой сокет с 192.168.2.3: 9999
* получает от 111.111.111.111: 8888
* отправляет на 111.111.111.111.111: 8888
клиент
* связывает свой сокет с 192.168.0.100
* получает от 222.222.222.222: 9999
* отправляет на 222.222.222.222: 9999
... вы понимаете, о чем я. Я понятия не имею, почему данные не проходят. Я попытался отправить / получить через порт 53 (для клиента и сервера), и это даже не должно быть необходимо, верно? Я имею в виду, что трафик должен проходить в любом случае (так же, как это происходит с играми, такими как Call of Duty), и нет, там нет активного брандмауэра Windows, только маршрутизатор в этом случае.
клиент / сервер использует connect () друг друга, а не receiveFrom / sendTo. Я тоже пытался это использовать, но без разницы.
Я не получаю никаких исключений или чего-либо еще, поэтому отладка невозможна: (
В чем может быть причина? Учитывайте тот факт, что он работает локально, но не глобально; Я согласен, что это действительно похоже на проблему с брандмауэром, но, как я описал выше, я не понимаю, как это применимо в моем сценарии, и я попытался использовать порт 53 и другие открытые порты.
Приветствия:)
РЕДАКТИРОВАТЬ: его довольно много кода, но при необходимости я могу скопировать его в