请问:我的IOCP服务器运行半小时后, 就再也不接受新的客户端连接了, 看日志信息,GetQueuedCompletionStatus() 出现错误
 10054 --WSAECONNRESET错误比较多.
因为客户端比较多,所以可能会客户端频繁断开连接, 然后服务器就关闭此socket. 这样应该不会不接受新的客户端连接吧.服务器会是死锁吗? 怎么查(源程序没有检查出错误)?日志中没有发现10055--WSAENOBUFS错误.

解决方案 »

  1.   

    closesocket
    shutdown
    然后记得投递AcceptEx等还有就是确定下线程没被退出,内存的申请和释放得正确
      

  2.   

    10054: An existing connection was forcibly closed by the remote host.
    确定你的程序是否有内存泄露的问题?
    http://blog.csdn.net/visualeleven/article/details/6088590
      

  3.   

    估计是有遗漏的连接没关闭吧。
    楼用用netstat查一下,估计fin_wait_2的套接字很多吧。
      

  4.   

    10054是传输数据时的错误,accept的时候应该不会出现10054。
      

  5.   


    10054是对端关闭连接,属于正常的,就算你资源释放有问题,也不会影响连接请求。你要检查接受连接部分的代码,用的accept还是acceptEX?
      

  6.   

    你在GetQueuedCompletionStatus下面取lasterror?那这个lasterror没什么意义。你记录了投递出去的连接数量没有?看一下是不是都用完了,没有投递新的。