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