跨设备Socket连接超时[WinError 10060]问题求助
已确认基础信息
- 同一设备内Socket通信正常,跨设备触发超时错误
- 服务端端口
44132处于LISTENING状态(netstat显示0.0.0.0:44132监听) - 客户端可ping通服务端设备,双方防火墙已关闭
- 初步怀疑路由器防火墙拦截连接
补充排查点
验证服务端绑定地址一致性:
代码中服务端绑定了10.0.0.32,但netstat显示监听地址是0.0.0.0,需确认运行的代码是否与贴出的一致。建议将服务端绑定地址改为0.0.0.0(允许所有网卡接收连接),避免因多网卡(有线/无线)导致绑定IP与实际局域网IP不匹配。用工具直接测试端口连通性:
在客户端设备执行telnet 10.0.0.32 44132,或用nc工具(若已安装)执行nc -zv 10.0.0.32 44132。如果提示无法连接,说明端口确实被拦截;若能连接,再排查代码逻辑是否在连接后未做处理。检查路由器内网隔离规则:
进入路由器管理后台,查看是否开启AP隔离(部分路由器叫“无线客户端隔离”),开启后同一局域网设备无法互相访问,需关闭该功能。同时检查路由器的内网防火墙规则,添加允许44132端口的双向通行规则。确认两台设备处于同一子网:
检查服务端和客户端的IP地址、子网掩码、网关,确保两者在同一子网(比如均为10.0.0.x/24,网关相同)。若不在同一子网,即使ping通也可能无法建立TCP连接。排查端口占用情况:
执行netstat -ano | findstr 44132获取监听端口的PID,在任务管理器中确认该PID对应的进程是你的服务端程序,而非其他软件占用端口。临时切换UDP协议验证:
编写简单的UDP服务端和客户端代码测试通信。若UDP能正常通信,说明TCP协议被针对性拦截;若UDP也不通,问题偏向网络层的隔离限制。排查网络代理/干扰软件:
关闭服务端和客户端设备上的VPN、代理软件,这类工具可能修改网络路由,导致局域网连接被转发至外部网络。同时检查服务端网卡是否开启了特殊网络选项(如“禁用TCP/IP上的NetBIOS”)。
内容的提问来源于stack exchange,提问作者Vuong Duong

