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

2024-04-26 12:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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()获得多个地址,每个地址注册一个服务?你知道吗


Tags: namedebuginfoport地址localloggingtype