利用GetQueuedCompletionStatus
如何判定一个客户端退出了呢?
除了发送数据包的大小为0,
也除了一定要规定客户在退出之前发送特定的数据包...
有其他办法吗>??

解决方案 »

  1.   


    如果客户端正常退出的话,除了返回数据包为0外,还会有其它错误会被GetQueuedCompletionStatus()检测到.但客户端非正常退出的话, GetQueuedCompletionStatus()是检测不到的,所以你要有一个"异常的检测机制",例如超时检测机制,在一定时间内(例如10分钟)某个连接都没有数据传输,就当成超时,并断开.(异常断开的客户端肯定在超时限制的时间内都没有数据传送的.)
      

  2.   

    那请问有其他错误是指哪个错误呢??
    异常检测机制?具体点可以吗?要设置setsocketopt吗??
    怎样来判断客户超时不发数据呢??
    GetQueuedCompletionStatus难道要在这个函数里面设置超时吗??
    还望能够具体点,谢谢