我在Windows10上有简单的python27脚本
它只是使用udp socket发送消息并等待回复
import socket
UDP_IP = "127.0.0.1"
UDP_PORT = 5005
MESSAGE = "Hello, World!"
print "UDP target IP:", UDP_IP
print "UDP target port:", UDP_PORT
print "message:", MESSAGE
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE, (UDP_IP, UDP_PORT))
sock.recvfrom(1200)
在Windows 10上,它会引发异常
Traceback (most recent call last):
File "simple.py", line 14, in <module>
print sock.recv(1200)
socket.error: [Errno 10054]
在Linux上运行正常。
我做错了什么?
答案 0 :(得分:0)
你的程序的前几行是打开一个套接字来发送一切都很好的数据。但是sock.recvfrom行没有与之关联的绑定。
换句话说,当您发送UDP时,您不应该期望收到任何回复。如果要发送消息然后等待回复(远程系统不会自动回复),则需要将套接字绑定到侦听端口。
此网站:https://wiki.python.org/moin/UdpCommunication有一些很好的参考资料。
答案 1 :(得分:0)
我在这里找到了解决方案Windows UDP sockets: recvfrom() fails with error 10054作者也这样做了。他忽略了这个错误。但也许这是解决这个问题的真正方法。
我只是将recvfrom
放入while
并将其与try..except
包裹在一起
我忽略了任何错误。它对我有用