Может ли библиотека lidgren-network подключиться напрямую к одноранговой сети, учитывая оба IP-адреса

Я использую библиотеку lidgen-network 3, чтобы попытаться создать одноранговое соединение. Я новичок в сетевом программировании, поэтому я использую эту библиотеку.

Используя функцию DiscoverKnownPeer(), я смог подключиться к моей сети. Что я прочитал в Интернете, так это то, что мне нужно сделать пробой NAT, для чего требуется работающий сервер, находящийся за пределами маршрутизатора. Я надеюсь на решение, которое не требует этого дополнительного сервера.

Если я смогу хранить оба IP-адреса на веб-сервере и создать веб-службу для отправки IP-адресов каждому соответствующему клиенту через XML, смогу ли я создать одноранговое соединение?

Заранее спасибо.

2 ответа

Нет, вы не сможете установить соединение через NAT без сервера рандеву

NAT стоит у вас на пути, потому что, даже если вы знаете IP-адрес, вы получаете только до маршрутизатора. Маршрутизатор получает запрос, поступающий из Интернета, и не знает, на какой внутренний IP-адрес его отправлять, поэтому он выбрасывает его.

NAT punchthrough работает, заставляя обоих пиров отправлять исходящие запросы друг другу, затем маршрутизатор "знает", что пакеты, направленные на его общедоступный IP-адрес на данном порту, должны отправляться на данный компьютер.

Итак, вам нужно подключить оба компьютера к внешнему серверу, не находящемуся за NAT, а затем использовать этот внешний сервер для координации соединения двух скрытых одноранговых узлов NAT (это введение в одноранговый узел, встроенное Лидгреном).

Я знаю, что это старо, но...

Вы не указали, что использование DiscoverKnownPeer() было необходимо в вашей настройке. Если это не так, вы можете настроить одноранговый режим, применив правила переадресации портов на маршрутизаторе.

Другие вопросы по тегам