【问题标题】:Problem with sendto when sending multiple times (Python)多次发送时sendto的问题(Python)
【发布时间】:2018-10-23 07:44:55
【问题描述】:

我正在尝试向网络中的所有相邻节点发送消息并运行以下循环。

但是,网络抛出一个错误 - 文件“Send.py”,在

 sent = sock.sendto(data.serialize(), (destinationIp, 5000))

socket.gaierror: [Errno -2] 名称或服务未知

for node in nodes:
    destinationIp = node.ip

    data = constructPacket()
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    sent = sock.sendto(data.serialize(), (destinationIp, 5000))
    sock.close()

有人可以告诉我为什么会发生这种情况吗?我已经仔细检查了正在使用的 ips,它们是合法的。

【问题讨论】:

    标签: python python-3.x sockets networking


    【解决方案1】:

    首先,不要在每次迭代期间创建套接字,为获得最佳实践,请尝试以下方法:

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    for node in nodes:
        destinationIp = node.ip
        data = constructPacket()
        sent = sock.sendto(data.serialize(), (destinationIp, 5000))
    sock.close()
    

    其次,检查node.ip是否返回了一个有效的IP地址(socket.gaierror表示无效的主机名)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2011-07-09
      相关资源
      最近更新 更多