在 Windows 10 机器上,我运行以下 python 代码(3.10.11)以在 UDP 端口 9001 上接收数据(未运行任何 VM):
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", 9001))
sock.settimeout(5)
while True:
data = sock.recv(1024)
decoded = json.loads(data.decode())
print(f"received message: {decoded}")
然而,我遇到了一个TimeoutError
。
当我检查时,wireshark
我可以看到这些数据每秒都在端口 9001 上接收,当我在同一台 Windows 机器上启动 Ubuntu VirtualMachine 时,运行完全相同的代码我可以读取端口 9001 上的 UDP 数据。
那么如何让它工作以便python代码直接在windows上运行呢?
我是否需要设置一些权限?Windows 是否无法处理 UDP 数据包?这是防火墙问题吗?发生了什么?如何修复它,以便完全相同的 Python 代码可以在 Windows 上运行?