情况是这样:本人开发了一个文件传输系统(目前在内网使用)。服务端用完成端口实现,客户端用非阻塞socket模式实现。客户端单独封装socket类,在实现接收或发送数据的成员函数里通过select判断后调用send或recv,并判断返回值,如果是0或SOCKET_ERROR && WSAGetLastError() != WSAEWOULDBLOCK时调用自定义的重连线程。目前的问题是系统在上传文件时传输正常,下载文件时传输速度缓慢,但在下载逻辑处理过程中断开一次连接,再自动重连后速度变快。经过代码测试:1.屏蔽掉客户端创建文件的代码,结果一样;2.客户端是通过自动重连线程获取服务端发送缓冲区大小,据此设定客户端接收缓冲区大小的,经测试发现重连前后获取和设定的缓冲区大小相同;3.唯一有区别的是捕捉的数据包在重连后比重连前大2-3倍。百思不得其解,还往大虾指点。