【发布时间】:2011-02-03 09:01:24
【问题描述】:
假设我有一个名为 super-dupper-app 的桌面软件。我希望它能够检测到此本地网络上所有运行着 super-dupper-app 的计算机。
非常感谢一般指针。 Python 指针或 sn-ps 的加分项。
【问题讨论】:
标签: python networking local autodiscovery
假设我有一个名为 super-dupper-app 的桌面软件。我希望它能够检测到此本地网络上所有运行着 super-dupper-app 的计算机。
非常感谢一般指针。 Python 指针或 sn-ps 的加分项。
【问题讨论】:
标签: python networking local autodiscovery
简短的回答是您使用multicast packets in python。我相信avahi 也有 python 绑定,它实现了“ZeroConf”又名 mDNS/DNS-SD,它是在多播之上实现的,可以让您不必重新发明轮子,也可以更加标准。
组播介于单播(数据包发送到一个主机)和广播(数据包发送到所有主机)之间,因为它允许主机(通常通过在它们上运行的应用程序)注册对某些组播组的兴趣。在适当的支持下,多播流量可以通过路由器和交换机,其想法是构建最小生成树以将数据包发送到所有订阅的主机。在 IPv4 多播中使用 224/4 子网。对于 IPv6,这是 ff00::/8。在以太网中,多播地址被映射到 MAC 地址(即在 MAC 地址中将多播位设置为 1),这使得多播流的有效过滤成为可能。
例如,运行 RIPv2 的路由器使用多播来发现其他相邻路由器并共享它们的路由,而不会打扰对 RIP 不感兴趣的主机。
mDNS/Bonjour/Rendevouz 是一种自动服务发现方法,它使用一个多播组来共享列出 LAN 上可用服务的 DNS 样式消息。
【讨论】: