我正在尝试向网络中的所有相邻节点发送消息,并正在运行以下循环。
但是,网络引发了错误-文件“ 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,它们是合法的。
答案 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
表示无效的主机名)。