00000001 2026-03-26 03:06:04 CTcpClient TCP连接测试ConnectTest failed!Server Ipaddr:10.135.134.103, iPort=7807,错误:Bad file descriptor
00000002 2026-03-26 03:06:04 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.103, iPort=7807,错误:Connection reset by peer
00000003 2026-03-26 03:06:04 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.101, iPort=7807,错误:Operation now in progress
00000004 2026-03-26 03:06:04 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.102, iPort=7807,错误:Operation now in progress
00000005 2026-03-26 03:06:05 CTcpClient TCP连接测试ConnectTest failed!Server Ipaddr:10.135.134.101, iPort=7807,错误:Bad file descriptor
00000006 2026-03-26 03:06:05 CTcpClient TCP连接测试ConnectTest failed!Server Ipaddr:10.135.134.102, iPort=7807,错误:Bad file descriptor
00000007 2026-03-26 03:06:06 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.103, iPort=7807,错误:Operation now in progress
00000008 2026-03-26 03:06:06 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.102, iPort=7807,错误:Operation now in progress
00000009 2026-03-26 03:06:06 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.101, iPort=7807,错误:Operation now in progress
00000010 2026-03-26 03:06:08 CTcpClient TCP连接测试ConnectTest failed!Server Ipaddr:10.135.134.103, iPort=7807,错误:Bad file descriptor
00000011 2026-03-26 03:06:08 CTcpClient ConnectThread 连接服务器失败!Server Ipaddr:10.135.134.103, iPort=7807,错误:Connection reset by peer
一、日志里 3 种错误分别是什么意思?
- Bad file descriptor(最关键、最频繁)
翻译:文件描述符无效 / 套接字已关闭
你用了一个已经被 close 关闭的 socket
或者根本没创建成功的 socket
去执行connect/send/recv
→ 直接报这个错
- Connection reset by peer
翻译:服务器强制断开了连接
你连上了,但服务器立刻把连接踢掉
原因:你用了无效 socket,服务器直接拒绝
- Operation now in progress
翻译:非阻塞连接正在进行中(被你错误当成失败)
非阻塞connect本来就是这个返回值
你的代码逻辑错误:把正常状态当成 "连接失败"
原因分析:
socket 没有重新创建就反复使用
connect 失败后,必须重新 socket (...) 创建新套接字
你没有重新创建,直接用旧的、已失效的 fd → Bad file descriptor
非阻塞 connect 逻辑错误
把EINPROGRESS当成连接失败,实际是正在连接中
socket 生命周期管理混乱
关闭了 fd,还继续用;或者没初始化就用
多线程环境没有加锁 / 没有判断 fd 有效性