最近发现zeroconf这个模块十分好用,可以在进程间广播一些服务信息,下面列出服务端广播和浏览端查收两部分代码;
import socket
from zeroconf import *
desc = {'path': '/~pennyworth/'}
info = ServiceInfo("_http._tcp.local.",
"Hope's Test Web Site._http._tcp.local.",
socket.inet_aton("127.0.0.1"), 8080, 0, 0,
desc, "hope.local.")
r_s = Zeroconf()
r_s.registerService(info)
while True:
try:
pass
except KeyboardInterrupt:
r_s.unregisterService(info)
r_s.close()
break
通过调用ServiceBrowser浏览后要延时会儿,不然还没查询到服务呢;
import time
import socket
from zeroconf import *
class HopesListener(object):
def __init__(self):
self.r = Zeroconf()
def addService(self,zeroconf,type,name):
print()
print(f"Service {type}")
info = self.r.getServiceInfo(type, name)
if info:
address_ip = socket.inet_ntoa(info.getAddress())
address_port = info.getPort()
print(f'IP:{address_ip},Port:{address_port}')
print()
if __name__ == '__main__':
r_b = Zeroconf()
listener = HopesListener()
browser = ServiceBrowser(r_b, "_http._tcp.local.", listener)
time.sleep(5)
r_b.close()
本文介绍了如何利用Python的Zeroconf库在进程间广播HTTP服务信息。服务端通过ServiceInfo创建并注册服务,监听键盘中断来取消注册。浏览端则创建ServiceBrowser来搜索并显示找到的服务IP和端口。这是一个简单的本地服务发现和通信的示例。
204

被折叠的 条评论
为什么被折叠?



