2011-01-19 1 views
0

Я просто хочу знать, как два приложения взаимодействуют друг с другом через Интернет. как отправить какое-либо сообщение другому, потому что, когда IP не фиксирован. пожалуйста, дайте мне несколько советов по кодированию, с помощью которых приложения p2p подключаются к другому через Интернет, когда IP неизвестен.Что касается соединения p2p и C#

, пожалуйста, помогите мне подробно.

+0

Как вы подразумеваете взаимодействие? Вы говорите «отправьте сообщение другому, потому что, когда IP не фиксирован», но какое сообщение и почему? Вы что-то пробовали?Помогите нам ПОМОГИТЕ ВАМ! –

ответ

2

Прежде чем пытаться понять детали реализации и советы по кодированию, лучше узнать, как работают сети P2P в целом, какие архитектуры и т. Д. (Начинаются с http://en.wikipedia.org/wiki/Peer-to-peer). Ваш вопрос слишком широк, чтобы «помочь вам в деталях».

Edit: Чтобы попасть в более быстрый, это может быть полезно: .NET P2P: Writing Peer-to-Peer Networked Apps with the Microsoft .NET Framework

1

Обычно это происходит через какой-то каталог, размещенный на сервере в известном месте.

1

Как указал Спендер, вы не можете сделать это, не используя сервер в качестве промежуточного. Вы ожидаете, что сможете посетить друга, если вы не знаете их адрес?

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

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

2

способ, которым Peer канал netPeerTcpBinding в WCF работает на том, что она использует комбинацию Peer Name Resolution Protocol и протокол обнаружения в Simple Service чтобы обнаружить сверстников на ровной сетке.

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

PNRP, с другой стороны, работает через сети и через Интернет с использованием IPv6. Поскольку большинство сетей еще не поддерживают IPv6, Teredo используется для туннелирования этих сообщений через IPv4.

Когда сетка P2P публикуется в глобальном облаке, имя ячейки отправляется на один из общедоступных/бесплатных для использования серверов PNRP Microsoft. Когда новые сверстники выходят в сеть, они сначала спрашивают эти серверы посева для частичного списка сверстников. Этот список затем используется для последующего разрешения имен пэра.

Когда одноранговое соединение разрешено в глобальном облаке, оно обычно разрешено к адресу IPv6. В любое время, когда адрес партнера изменяется, эта информация отправляется через сетку, чтобы другие коллеги знали об этом.

Это, по существу распределенной хеш-таблица: http://en.wikipedia.org/wiki/Distributed_hash_table

При отправке данных на сетке, эти данные направляются в Peer канал к аналогам отправляющей машина непосредственно знает о. Каждый из этих сверстников затем направляется к своим известным партнерам и т. Д. Это продолжается до тех пор, пока сообщение не будет отправлено всем сверстникам на сетке.

Это работает через Интернет (и даже за брандмауэрами/устройствами NAT) благодаря Teredo и IPv6.

 Смежные вопросы

  • Нет связанных вопросов^_^