Написание простого P2P-чата - PullRequest
0 голосов
/ 04 января 2012

Это мой первый опыт работы с P2P, и мне нужна помощь относительно дизайна.

Я занимаюсь разработкой простого приложения для обмена сообщениями.У меня есть сервер каталогов, на котором каждый пользователь аутентифицирует и объявляет открытый порт, на котором каждый пользователь доступен.Сервер каталогов поддерживает пользователей и порты, и я могу запросить сервер каталогов для любого конкретного пользователя.Эта часть сделана.Вторая часть - это чат, который, я думаю, должен быть P2P.Я могу начать чат, а также быть конечной точкой чата (как клиента, так и сервера)

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

В этом случае мне нужно 3 сокета, один для связи с сервером и два для P2P

1 Ответ

0 голосов
/ 06 января 2012

Если вы хотите перейти на P2P, вам лучше использовать фреймворк, такой как JXTA, например, если вы пишете код на Java.Само по себе создание сокетов может быть недостаточно, потому что есть более сложные проблемы, с которыми вам нужно иметь дело, такие как обход NAT, если вы работаете за пределами вашей локальной сети.).Если у него есть общедоступный IP-адрес, вы можете реализовать TURN-подобную архитектуру (одноранговые узлы обмениваются данными через этого центрального однорангового узла).Если вам нужно прямое соединение между узлами, вы ищете решения STUN, но вам все еще нужен центральный узел, чтобы облегчить связь.UDP не очень сложен, вам просто нужно пробить дыру в NAT.Теперь имейте в виду, что обход NAT не всегда возможен (это зависит от самого NAT).В этом случае решение резервного копирования в STUN один.

...