Как добавить функцию "видеть другой компьютер в этой локальной сети"?

Допустим, у меня есть настольное программное обеспечение, которое называется super-dupper-app. Я хочу, чтобы он мог обнаруживать все компьютеры в этой локальной сети с запущенным приложением super-dupper.

Общие указания действительно ценятся. Бонусные баллы за указатели или фрагменты Python.

1 ответ

Решение

Краткий ответ: вы используете многоадресные пакеты в Python. Я полагаю, что есть также привязки Python для avahi, который реализует "ZeroConf" или mDNS/DNS-SD, который реализован поверх многоадресной рассылки и избавит вас от необходимости заново изобретать колесо, а также быть более стандартным.

Многоадресная рассылка находится где-то между одноадресной передачей (пакеты идут на один хост) и широковещательной передачей (пакеты идут на все хосты) в том смысле, что она позволяет хосту (через приложения, работающие на них обычно) регистрировать интерес к определенным группам многоадресной рассылки. Многоадресный трафик может проходить как через маршрутизаторы, так и через коммутаторы при соответствующей поддержке, и идея заключается в том, что создается минимальное связующее дерево для отправки пакетов всем подписанным хостам. В IPv4 многоадресная передача использует подсеть 224/4. Для IPv6 это ff00::/8. В локальных сетях многоадресные адреса отображаются на MAC-адреса (т. Е. Бит многоадресной рассылки установлен на 1 в MAC-адресе), что делает возможной эффективную фильтрацию многоадресных потоков.

Например, маршрутизаторы, использующие RIPv2, используют многоадресную рассылку для обнаружения других соседних маршрутизаторов и совместного использования их маршрутов, не беспокоя хостов, которые не заинтересованы в RIP.

mDNS / Bonjour / Rendevouz - это подход к автоматическому обнаружению служб, использующий одну многоадресную группу для обмена сообщениями в стиле DNS со списком доступных служб в локальной сети.

Другие вопросы по тегам