最近在写完成端口的网络模型,遇到个问题,就是判断客户端断开的问题,比如 客户端那边调用了closesocket,服务端GetQueuedCompletionStatus会收到一个recv的事件 并且该函数返回值是TRUE,这个函数的第二个参数lpNumberOfBytesTransferred会是0  我就通过判断这个是0来确认客户端已经断开连接,如果是服务器端自己closesocket了和客户端连接的套接字 也会收到一个recv事件 ,lpNumberOfBytesTransferred确实也会是0,和客户端断开唯一不一样的是GetQueuedCompletionStatus的返回值是FALSE,这里我也可以很好的判断出来和客户端断开连接。但是如果 客户端连接上来的同时立即send一个数据上来,这个时候服务器主动closesocket过后,GetQueuedCompletionStatus同样会收到recv事件,并且lpNumberOfBytesTransferred是客户端send的数据长度,也可以收到客户端的所有数据,然后就没然后了 。就不知道这个连接是否断开了。怎么搞呢?