发送多次时sendto出现问题(Python)

时间:2018-10-23 07:44:55

标签: python python-3.x sockets networking

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

但是,网络引发了错误-文件“ 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()

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

1 个答案:

答案 0 :(得分:2)

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

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表示无效的主机名)。