Альтернатива многоадресной рассылке

#java #networking #tcp #udp

#java #сеть #tcp #udp

Вопрос:

Я пытаюсь реализовать приложение, в котором часть его функций похожа на чат. Есть несколько пользователей, и соединение является P2P. Данные, отправляемые от каждого однорангового узла другим, должны быть сериализованными объектами. Мне трудно решить, как будут отправляться данные. Лучшим выбором казалась многоадресная рассылка, но, поскольку ее чат, я не могу позволить себе потерять данные (это повредило бы текст ??). С другой стороны, если я использую TCP, каждый одноранговый узел должен быть подключен ко всем другим одноранговым узлам, чтобы прослушивать обновления, и это звучит неправильно (??) / создаст беспорядок.

Я хотел бы получить предложения относительно того, как я мог бы реализовать что-то подобное (отправлять данные нескольким клиентам, прослушивать обновления без централизованного сервера).Я уже проверил JXTA и пытаюсь понять, возможно ли реализовать это самостоятельно.Также я читал о надежном UDP, но не нашел никаких «официальных» решений / чего-то, что я мог бы легко использовать.

ps Я видел похожие вопросы на этот и надеялся на более персонализированную помощь.

Комментарии:

1. здесь можно использовать API JGroups. jgroups.org

2. Я вижу много разговоров о NAT и о том, как это вызывает проблемы с приложениями P2P . Знаете ли вы, в каких сценариях / насколько вероятно, что у вас возникнет такая проблема с jgroups?

3. В основном я работал с JGroups API по локальной сети, поскольку групповая адресация на основе многоадресной рассылки лучше всего использовать в закрытой сети. В глобальной сети связь на основе многоадресной рассылки создает проблемы. Я считаю, что у JGroups есть решения, если требуется многоадресная рассылка в глобальной сети (например, через Интернет).

4. как насчет случаев, когда устройства используют Wi-Fi, но не подключены к какой-либо сети, и они хотят общаться друг с другом точно так же, как Bluetooth (но, пожалуйста, не используйте Bluetooth)? Возможно ли реализовать это с помощью jgroups для связи и подключения Wi-Fi? @UsmanSaleem,

5. Я считаю, что JGroups можно использовать только после установления соединения между устройствами. Установление соединения не должно быть проблемой для этой библиотеки.

Ответ №1:

Взгляните на zeromq.