Реализовать 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();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы