Правильный способ публикации и поиска сервисов в локальной сети с использованием Python - PullRequest
2 голосов
/ 03 декабря 2010

Мое приложение открывает сокет TCP и ожидает данные от других пользователей в сети, используя то же приложение.В то же время он может транслировать данные на указанный хост в сети.

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

Является ли Bonjour / ZeroConf правильным путем для достижения этой цели?(Я бы хотел, чтобы это кроссплатформенный OSX / Win / * Nix)

Ответы [ 4 ]

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

он может транслировать данные на указанный хост в сети

Это не является следствием.

Я предполагаю, что вы на самом деле не имеете в видушироковещательный, вы имеете в виду Unicast или просто "отправить"?

Является ли Bonjour / ZeroConf правильным путем для достижения этой цели?

Это действительнозависит от вашей целевой среды и от того, для чего предназначено ваше приложение.

Как указывает Игнасио, вам необходимо установить программное обеспечение Apple в Windows для работы Zeroconf / mDNS в данный момент.

Это может подойти для небольшого офиса / дома.


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

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

Может быть с помощью опции DHCPили по записям службы DNS... в этих случаях вы могли бы написать сервер с запросом для отслеживания активных клиентов ... очень похоже на BitTorrent Tracker.

Две вещи, которые следует учитывать при разработке сетевого приложения:

  • Была бы когда-нибудь причина запускать более одной "установки" вашего приложения в сети?
  • Всегда учитывайте последствия управления версиями: один клиент более актуален, чем другой, могут ли они по-прежнему общаться с каждымдругой или хотя бы грациозный провал?
2 голосов
/ 03 декабря 2010

Zeroconf / DNS-SD - отличная идея в этом случае. Он предоставляется Bonjour для OS X и Windows (но должен быть установлен отдельно или как часть продукта Apple в Windows) и Avahi для FOSS * nix.

0 голосов
/ 03 декабря 2010

У меня есть список на веб-странице, неплохо, если вам нужны интернет-коммуникации.

<dl_service updated="2010-12-03 11:55:40+01:00">
 <client name="internal" ip="10.0.23.234" external_ip="1.1.1.1"/> 
 <client name="bigone" ip="2.2.2.2" external_ip="2.2.2.2">
  <messsage type="connect" from="Bigone" to="internal" />
 </client> 
</dl_service>

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

Но я действительно рекомендую Zeroconf, по крайней мере, если вы используете Linux + MacOSX, вообще не знаете о Windows.

0 голосов
/ 03 декабря 2010

Я думаю, что ZeroConf - очень хорошее начало. Вы можете найти этот документ полезным.

...