Может ли библиотека lidgren-network подключиться напрямую к одноранговой сети, учитывая оба IP-адреса
Я использую библиотеку lidgen-network 3, чтобы попытаться создать одноранговое соединение. Я новичок в сетевом программировании, поэтому я использую эту библиотеку.
Используя функцию DiscoverKnownPeer(), я смог подключиться к моей сети. Что я прочитал в Интернете, так это то, что мне нужно сделать пробой NAT, для чего требуется работающий сервер, находящийся за пределами маршрутизатора. Я надеюсь на решение, которое не требует этого дополнительного сервера.
Если я смогу хранить оба IP-адреса на веб-сервере и создать веб-службу для отправки IP-адресов каждому соответствующему клиенту через XML, смогу ли я создать одноранговое соединение?
Заранее спасибо.
2 ответа
Нет, вы не сможете установить соединение через NAT без сервера рандеву
NAT стоит у вас на пути, потому что, даже если вы знаете IP-адрес, вы получаете только до маршрутизатора. Маршрутизатор получает запрос, поступающий из Интернета, и не знает, на какой внутренний IP-адрес его отправлять, поэтому он выбрасывает его.
NAT punchthrough работает, заставляя обоих пиров отправлять исходящие запросы друг другу, затем маршрутизатор "знает", что пакеты, направленные на его общедоступный IP-адрес на данном порту, должны отправляться на данный компьютер.
Итак, вам нужно подключить оба компьютера к внешнему серверу, не находящемуся за NAT, а затем использовать этот внешний сервер для координации соединения двух скрытых одноранговых узлов NAT (это введение в одноранговый узел, встроенное Лидгреном).
Я знаю, что это старо, но...
Вы не указали, что использование DiscoverKnownPeer() было необходимо в вашей настройке. Если это не так, вы можете настроить одноранговый режим, применив правила переадресации портов на маршрутизаторе.