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

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

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

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

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


person arren the imposter    schedule 24.09.2010    source источник


Ответы (2)


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

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

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

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

person Martin    schedule 04.03.2011
comment
Я хочу сделать интернет-чат p2p в Delphi Xe8, приложении для нескольких устройств. Есть ли способ использовать сетевую библиотеку Lidgren в Delphi XE? Если да, не могли бы вы предоставить мне ссылку для скачивания. Если НЕТ, есть ли аналогичная сетевая библиотека Lidgren для моего Delphi XE8? - person Alex Kirov; 03.04.2017

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

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

person etropic    schedule 02.05.2011