我想弄清楚如何扫描网络,找出avahi发布的设备。在
#!/usr/bin/python3
from zeroconf import ServiceBrowser, Zeroconf
from time import sleep
class MyListener:
def remove_service(self, zeroconf, type, name):
print("Service % removed" % (name))
def add_service(self, zeroconf, type, name):
info = zeroconf.get_service_info(type, name)
info = str(info)
info = info.split(",")[6]
print(info)
zeroconf = Zeroconf()
listener = MyListener()
browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)
try:
sleep(1)
finally:
zeroconf.close()
它可以工作,但它没有给我任何IPv4地址。 输出(示例):
ServiceInfo(type='_http._tcp.local.', name='Barco ptp-owsserver-2237._http._tcp.local.', address=b'\n\x80Cj', port=80, weight=0, priority=0, server='ptp-owsserver-2237.local.', properties={b'root': b'/'})
有人能告诉我如何获取avahi在我们网络上发布的设备的IPv4地址吗?在
要获得IP地址,可以使用类
ServiceInfo
的属性address
。它提供bytes
类型的IP地址(在您的帖子中,它显示为b'\n\x80Cj'
),因此您应该使用socket.inet_ntoa()
将其转换为更可读的格式。下面是我替换MyListener.add_service()
方法中的print()
指令以打印IP地址的代码:相关问题 更多 >
编程相关推荐