我使用pyzeroconf(https://github.com/jstasiak/python-zeroconf/)设置zeroconf:
TYPE = "_motion._tcp.local."
NAME = "_yyyyXXXX." + TYPE
PORT = 4321
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("zeroconf").setLevel(logging.DEBUG)
zeroconf = Zeroconf()
def reg_srv():
info = ServiceInfo(TYPE,
NAME,
socket.inet_aton("127.0.0.1"), PORT, 0, 0,
{"desc":"HOME Bonjour test"})
zeroconf.register_service(info)
我使用nc -l 4321
来接收连接。你知道吗
但插座(来自远程计算机或电话)报告连接被拒绝。你知道吗
当我开始使用dns-sd -R "XXX" "_motion._tcp" "local" 4321
时,效果很好。你知道吗
我错过了什么?你知道吗
---更新时间:
我发现是因为socket.inet_aton("127.0.0.1")
。如果我改变了我的局域网ip地址它可以工作。你知道吗
但是我应该如何设置这个地址值以适应动态ip地址呢?你知道吗
---更新时间:
我改为:
socket_addr = socket.gethostbyname(socket.gethostname())
info = ServiceInfo(TYPE,
NAME,
socket.inet_aton(socket_addr), PORT, 0, 0,
{"desc":"HOME Bonjour test"})
如何同时支持ipv4和ipv6地址?你知道吗
用socket.getaddrinfo()
获得多个地址,每个地址注册一个服务?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐