Сетевое общение через две частные сети - PullRequest
2 голосов
/ 10 апреля 2010

Я пытаюсь реализовать одноранговую связь ..

Я использую сокеты для связи между ними. Я хочу знать, есть ли какие-либо способы, которыми я могу использовать один и тот же тип связи, когда два пира находятся за двумя частными сетями (они не знают общедоступный IP-адрес друг друга). Я могу представить общий буфер в известном месте как средство общения. Но есть ли другой способ сделать это?

Ответы [ 3 ]

1 голос
/ 10 апреля 2010

Возможно, вам также придется рассмотреть случай, когда у двух пиров даже нет общедоступных IP-адресов, и в этом случае вы можете использовать методы STUN , чтобы избежать необходимости в центральном сервере. STUN эффективно использовался в таких продуктах, как Skype (я думаю), но на данном этапе он остается черным искусством.

Для централизованного подхода рассмотрим XMPP , из которых ejabberd является очень популярной реализацией. Существуют и другие протоколы обмена сообщениями, например, новый стандарт AMPQ.

Эти технологии, вероятно, будут более надежными и масштабируемыми, чем домашний протокол на основе сокетов.

0 голосов
/ 07 марта 2013

Поскольку оба находятся в разных частных сетях, оба узла не могут общаться друг с другом. Вам необходимо иметь общедоступный сервер, чтобы вы могли установить соединение через этот сервер. Для получения подробной информации см. Resiprocate, Resiprocate

0 голосов
/ 10 апреля 2010

STUN и TURN - это наиболее распространенные способы достижения этой цели, которые уже опубликованы и основаны на стандартах. Однако в последнее время я видел действительно интересный подход к этому с использованием сообщений icmp. Он называется pwnat и доступен здесь

...