You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同一网络下Python Socket无法跨设备连接的问题求助

问题:跨设备Socket连接失败(错误10060)

同一设备运行Socket服务端与客户端脚本可正常通信,但跨设备连接时停滞约20秒后抛出错误10060。已确认:

  • 客户端使用服务端IP(192.168.0.34)
  • 关闭Windows防火墙及杀毒软件
  • 两台设备处于同一网络
  • 脚本此前正常运行,更换宽带套餐后失效,同时部分无线智能家居设备也受影响

服务端:Raspberry Pi 3b,Python 3.4.2
客户端:Windows 10 PC,Python 3.7.8


排查与解决方案

  • 关闭路由器AP隔离:更换宽带套餐后路由器可能默认开启AP隔离(客户端隔离),阻止同一WiFi下设备互访。进入路由器后台,找到无线设置中的AP隔离选项并关闭。
  • 检查树莓派防火墙规则:树莓派的iptables可能限制了端口,执行sudo iptables -L查看规则,临时关闭防火墙测试:sudo iptables -F
  • 修正服务端绑定IP:树莓派可能存在多网络接口或IP变更,将服务端绑定地址改为0.0.0.0(监听所有接口),避免IP固定导致的问题:
    s.bind(('0.0.0.0', 1234))
    
  • 测试基础网络连通性:
    • Windows客户端执行ping 192.168.0.34,确认是否能正常响应
    • 执行telnet 192.168.0.34 1234,直接测试端口是否可访问
  • 确认端口监听状态:树莓派上执行sudo netstat -tulpn | grep 1234,验证服务端是否真的在监听1234端口
  • 检查路由器子网设置:确认2.4G和5G WiFi是否处于同一网段,部分路由器会将不同频段设备划分到不同子网,导致无法互访

服务端代码

import socket
from time import sleep

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('192.168.0.34', 1234))
s.listen(5)

clientsocket = None

print("Listening")

while True:
    clientsocket, address = s.accept()
    print("Connection Received")
    break

# The code that runs after a client successfully connects

客户端代码

import socket
from time import sleep

print("Looking")
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.0.34', 1234))
print("Connected")
sleep(20) # This is just so I can read any errors before the window closes for testing.

# code to start sending data

内容的提问来源于stack exchange,提问作者Rymazon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:48:06