Linux设备无法连接Windows端Socket服务问题求助
Socket跨Linux、Windows设备连接失败解决方案
核心问题排查&修复步骤:
- 修复Windows服务端绑定地址配置
你当前代码中使用socket.gethostname()作为绑定地址,该值解析后通常会绑定到127.0.0.1回环地址或单个网卡的IP地址,导致外部设备的连接请求无法被服务端捕获。
解决方案是将绑定地址修改为0.0.0.0,即可监听本机所有可用网络接口的请求,修改后对应代码行如下:serverSocket.bind(('0.0.0.0', PORT)) - 放行Windows防火墙规则
Windows系统默认防火墙会拦截外部设备对本地端口的TCP连接请求,可任选以下一种方案处理:- 测试阶段临时关闭Windows Defender防火墙,验证连通性后重新开启
- 在Windows防火墙高级设置中新增入站规则,放行你使用的对应端口(示例中为5050)的TCP协议请求
- 校验基础网络连通性
首先确认两台设备处于同一局域网段,在Linux设备上执行以下命令校验连通性:- 执行
ping <Windows设备的内网IP>,确认网络链路可达,Windows设备的内网IP可通过在Windows端执行ipconfig,查看对应联网网卡(以太网/WiFi)的IPv4地址获取 - 执行
nc -zv <Windows设备的内网IP> 5050,确认对应端口可正常访问,若提示端口不可达优先排查防火墙配置
- 执行
- 校验端口占用情况
在Windows端cmd执行netstat -ano | findstr "5050",确认对应端口没有被其他进程占用,若存在占用可更换未被使用的端口重新测试
内容的提问来源于stack exchange,提问作者Fredi
相关产品推荐
相关产品推荐

