Реализовать UDP hole punching для прямой передачи информации между двумя компьютерами, находящимися за NAT - C#
Формулировка задачи:
Хочу реализовать UDP hole punching для прямой передачи информации между двумя компьютерами, находящимися за NAT.
Пока пытаюсь проверить в "ручном" режиме. Оба компа отправляют запрос на STUN-сервер, и получают от него ответ о виде NAT и внешний IP и порт (в данном случае, у обоих Port_Restricted_Cone, preserves ports, 1-й - 192.162.143.109:6665, 2-й - 46.119.203.241:9000).
После этого вношу соответствующие данные настройки программы и каждый из компьютеров отсылает циклически UDP сообщения и пытается принять входящие:
1-й - через свой порт 6665 на 46.119.203.241:9000
2-й - через свой порт 9000 на 192.162.143.109:6665
по идее, первые из данных сообщений должны пропасть, но последующие начать приходить.
Но сообщения не доходят.
Что я не так делаю или что не так понимаю?
Решение задачи: «Реализовать UDP hole punching для прямой передачи информации между двумя компьютерами, находящимися за NAT»
textual
Листинг программы
string address = String.Empty; udpClient = new UdpClient(); udpClient.AllowNatTraversal(true); ResultSTUN result = ClientSTUN.Query("stun.ekiga.net", 3478, udpClient.Client); if (result.NetType == UDP_BLOCKED) /* обработка ошибки */ else address = result.PublicEndPoint.ToString();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д