Завершение сокетного соединения через интранет или интернет - PullRequest
0 голосов
/ 12 февраля 2010

Я пишу одноранговую программу для двоичных сокетов. Есть только две конечные точки. Одна розетка слушает на моем ноутбуке. Другой сокет вещает из моей настольной системы. У меня есть третья программа, работающая на размещенном сервере, которая доступна для посредничества между ними. Моя проблема заключается в том, что, когда ноутбук и настольный компьютер находятся в одной сети, они оба имеют одинаковый IP-адрес в Интернете, но разные IP-адреса в интрасети, но когда ноутбук находится в дороге, тогда IP-адреса различаются. Чтобы быть по-настоящему одноранговым, я должен написать это так, чтобы после того, как соединение было установлено, эти два компьютера общались напрямую друг с другом. Как это обычно достигается, когда два компьютера могут совместно использовать один и тот же IP-адрес, если они работают в одной сети?

1 Ответ

0 голосов
/ 13 февраля 2010

Ваш вопрос действительно: как мне работать с преобразованием сетевых адресов в системе P2P?

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

Еще одна возможность, связанная с UDP, - здесь - я недостаточно изучил его, чтобы узнать, действительно ли он удаляет брокера из уравнения после рукопожатия.

Как всегда, Google может быть вашим другом .

...