p2p библиотека с открытым исходным кодом tcp / udp поддержка многоадресной рассылки - PullRequest
3 голосов
/ 12 июля 2011

У меня на компьютере запущено определенное приложение.Одно и то же приложение может работать на многих компьютерах в локальной сети или в разных местах мира.Я хочу общаться между ними.Поэтому я в основном хочу систему p2p.Но я всегда буду знать, какие компьютеры (определенный IP-адрес) будут равноправными.Я просто хочу, чтобы коллеги присоединились и оставили функциональность.Самая важная цель - скорость и время связи.Я предполагаю, что простая многоадресная передача UDP (если что-то подобное существует) между узлами будет самым быстрым решением.Я не хочу повторно передавать сообщения, даже если они потеряны.Должен ли я использовать существующую библиотеку p2p, например, libjingle и т.или просто создать базовый фреймворк с нуля, так как мои потребности довольно просты?

Ответы [ 3 ]

2 голосов
/ 12 июля 2011

Я думаю, вы упускаете точку UDP.Это не экономит время в том смысле, что сообщение быстрее доставляется к месту назначения, просто вы отправляете сообщение, и вам все равно, будет ли оно безопасно доставлено на другую сторону.На WAN - он, вероятно, не прибудет на другую сторону.UDP через сети проблематичен, так как он может быть выброшен любым маршрутизатором на пути, ограниченном по пропускной способности - для него нет гарантии доставки.

Я бы не советовал использовать UDP вне топологии в разделеваш контроль.

Что касается P2P против направленных сокетов - вопрос в том, что вам нужно для перемещения.Вам нужна двусторонняя / разнонаправленная связь между всеми узлами, или вы говорите с одним сервером со всех узлов?

Вы упомянули многоадресную рассылку - это будет означать, что у вас есть какой-то централизованный источник данных, который передает информациюи все остальные слушают - в этом случае нет никакой выгоды для P2P, и многоадресная передача, как протокол UDP, может не работать хорошо в нескольких сетях.Но вы можете использовать TCP-соединения с каждым из узлов и выполнять многоадресную рассылку самостоятельно, а не через IGMP.Вы можете (и должны) использовать многопоточные и неблокирующие сокеты, если вас беспокоит отправка блокирующих вас, и, конечно, вы можете использовать настройки QoS, чтобы «попросить» маршрутизаторы протолкнуть ваши сокеты.

1 голос
/ 09 августа 2011

Вы можете использовать zeromq для поддержки всех сетевых коммуникаций: zeromq - это простая библиотека, инкапсулирующая TCP и UDP для связи высокого уровня.

Для P2P вы можете использовать другой режим 0mq:

  • режим PGM / EPGM для обнаружения члена P2P в вашей локальной сети (используется многоадресная передача)
  • режим REQ / REP для задания вопроса одному члену
  • режим PULL / PUSH для дубликата одногоресурс в сети
  • режим Публикация / подписка для передачи файла всем запрашивающим

Предупреждение, zeromq сложно установить на windows ...

И дляHMI, использовать зеленые туфли?

0 голосов
/ 12 июля 2011

Я думаю, вам следует преуспеть в использовании многоадресной рассылки, к сожалению, я не знаю ни одной библиотеки,

, но все же на случай, если вам придется делать это с нуля

, взгляните на это: http://www.tldp.org/HOWTO/Multicast-HOWTO.html

удачи: -)

...