Сделайте два Java-приложения в одной локальной сети осведомленными друг о друге - PullRequest
3 голосов
/ 29 декабря 2010

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

Я полагаю, что у меня может быть решение относительно того, как это будет работать, но я не могу найти никаких примеров для сравнения моего решения. Ребята, вы знаете, как обычно решается эта проблема?

Ответы [ 3 ]

5 голосов
/ 31 декабря 2010

Существует хорошая библиотека, которая реализует стандарт Zeroconf / Bonjour на обычном Java в http://jmdns.sourceforge.net/

Это в основном освобождает вас от нагрузки протокола и позволяет рекламировать и искать поставщиков услуг на основе логических именЭто то, что печатает iTunes или Mac, например).

Эта книга http://www.amazon.com/Zero-Configuration-Networking-Definitive-Guide/dp/0596101007 объясняет все основные понятия.

4 голосов
/ 29 декабря 2010

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

Вы можете искать многоадресную рассылку в Java онлайн.

Некоторые ссылки, связанные с многоадресной рассылкой:

http://download.oracle.com/javase/1.4.2/docs/api/java/net/MulticastSocket.html

http://www.javafaq.nu/java-article817.html

Хорошее программное обеспечение для многоадресного чата, на которое вы можете ссылаться:

http://sourceforge.net/projects/mc2/

2 голосов
/ 29 декабря 2010

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

Как только вы знаете, к кому подключаться, вы просто открываете TCP-соединение (или используете UDP, если это критично по времени), и все готово..

Кстати, это для IPv4 - IPv6 не имеет трансляции (хотя что-то похожее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...