这个项目使用 zeroconf
Python 库来浏览和监控本地网络中的服务。它能够发现网络上的新服务,追踪服务的更新以及当服务不再可用时接收通知。
特性
- 服务发现:自动检测网络上的新服务。
- 服务更新:监控服务的变更和更新。
- 服务移除:捕捉并记录服务移除事件。
安装依赖
使用 pip 安装所需的 zeroconf
库:
pip install zeroconf
完整代码
from zeroconf import ServiceBrowser, Zeroconf
class MyListener:
# 当服务被移除时调用
def remove_service(self, zeroconf, type, name):
print(f"Service {name} removed")
# 当服务更新时调用
def update_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
print(f"Service {name} updated, service info: {info}")
# 当添加新服务时调用
def add_service(self, zeroconf, type, name):
if type == "_services._dns-sd._udp.local.":
# 如果是服务类型,为这个类型创建一个新的浏览器
new_browser = ServiceBrowser(zeroconf, name, listener)
else:
# 如果是服务实例,获取服务信息
info = zeroconf.get_service_info(type, name)
print(f"Service {name} added, service info: {info}")
# 初始化Zeroconf对象
zeroconf = Zeroconf()
# 创建监听器实例
listener = MyListener()
# 开始浏览所有服务类型
browser = ServiceBrowser(zeroconf, "_services._dns-sd._udp.local.", listener)
try:
input("Press enter to exit...\n\n")
finally:
# 确保最后关闭Zeroconf以释放资源
zeroconf.close()
代码说明
MyListener
类:用于处理 zeroconf 事件的监听器。add_service
方法:当检测到新服务时调用。update_service
方法:当现有服务更新时调用。remove_service
方法:当服务被移除时调用。Zeroconf
和ServiceBrowser
:用于初始化和开始服务浏览。