连接到pyzeroconf广播的服务被拒绝

时间:2016-03-19 08:27:58

标签: python sockets networking zeroconf

我使用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()获取多个地址并且每个地址都注册一个服务?

0 个答案:

没有答案