Windows更新后DOBOT MG400与Python TCP_IP连接报WinError 10053求助
处理WinError 10053:DOBOT MG400与Windows 10 TCP连接异常问题
问题背景
此前通过Python 3 + RJ45 TCP/IP协议可正常控制DOBOT MG400机械臂,Windows系统更新后出现WinError 10053(连接被主机软件终止)。重启电脑后可正常运行几次,但很快再次报错:
- 设备为学校管理的Windows 10电脑,已尝试关闭防火墙、断开互联网、系统还原(还原点过晚),问题未解决
- 机械臂配套软件DOBOTStudio可正常控制运动,排除机械臂硬件/自身固件问题
最小复现代码
import socket try: TCP_IP = '192.168.1.6' TCP_PORT = 30003 BUFFER_SIZE = 80 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((TCP_IP, TCP_PORT)) print(f"Connected to DOBOT port {TCP_PORT}") except Exception as doboterror: print(f"Unable to connect to DOBOT port {TCP_PORT}:\n{doboterror}") def send(msg): s.send(msg.encode()) def enable(weight = 0.196): msg = (f"EnableRobot({weight})") send(msg)
错误表现
首次调用enable()无响应(正常应激活机械臂),再次调用触发错误:
Connected to DOBOT port 30003
enable()
enable()
Traceback (most recent call last):
File "", line 1, in
File "D:\New DOBOT files\MRE DOBOT.py", line 20, in enable
send(msg)
File "D:\New DOBOT files\MRE DOBOT.py", line 16, in send
s.send(msg.encode())
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
解决方案建议
1. 处理学校管控的安全软件
学校设备通常部署有后台运行的企业级杀毒/EDR/集中管控软件,这是最可能的原因:
- 联系学校IT管理员,将你的Python程序路径、TCP端口30003加入安全白名单
- 申请临时禁用该设备的安全管控规则,测试是否解决问题
2. 优化TCP交互逻辑(符合DOBOT协议规范)
当前代码仅发送指令不接收响应,可能导致缓冲区阻塞触发系统主动断开连接:
- 修改
send函数,增加响应接收逻辑:def send(msg): s.send(msg.encode()) # 接收机械臂响应,BUFFER_SIZE按协议文档设置 response = s.recv(BUFFER_SIZE) print(f"Robot response: {response.decode()}") - 增加连接状态检查,避免向已断开的连接发送数据:
def check_connection(): try: # 发送空包检测连接有效性 s.send(b'') return True except: # 重连逻辑 s.close() s.connect((TCP_IP, TCP_PORT)) print("Reconnected to DOBOT") return True
3. 排查Windows更新带来的网络配置变化
- 用管理员权限打开命令提示符,执行
netsh int tcp show global查看TCP参数,检查是否开启了快速回收闲置连接的策略,若开启可尝试调整:netsh int tcp set global idleconnectiontimeout=300000 - 检查Windows Defender高级威胁防护(ATP)规则,确认是否限制了本地TCP连接
4. 交叉验证问题来源
- 用非学校管控的Windows电脑测试相同代码,若正常则可确定是学校设备的安全/系统配置问题
- 尝试USB连接控制机械臂,对比TCP连接的差异
内容的提问来源于stack exchange,提问作者user23509042
相关产品推荐
相关产品推荐

