Windows系统下Python UDP接收代码超时问题的排查与解决咨询
Windows系统下Python UDP接收代码超时问题的排查与解决咨询
大家好,我遇到了一个很费解的UDP接收问题,想请教下各位大佬:
我在Windows 10机器上用Python 3.10.11写了一段代码,想要在9001端口接收UDP数据(机器上没有运行任何虚拟机),代码如下:
import socket import json 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虚拟机,运行完全相同的代码,却能正常接收到这些UDP数据。
我想搞明白怎么让这段代码直接在Windows上正常工作?是不是需要设置什么系统权限?还是Windows本身处理UDP数据包有特殊机制?或者是防火墙拦截了?到底哪里出问题了?有没有办法让这段代码在Windows上直接运行成功?
备注:内容来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

