如何修复在 Windows 上接收 UDP 数据?

如何修复在 Windows 上接收 UDP 数据?

在 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 上运行?

相关内容