首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

icop从GetQueuedCompletionStatus获取长度为0的数据,这表示什么意思?该怎么解决

2013-12-04 
icop从GetQueuedCompletionStatus获取长度为0的数据,这表示什么意思?我发现有时候从GetQueuedCompletionSt

icop从GetQueuedCompletionStatus获取长度为0的数据,这表示什么意思?
我发现有时候从GetQueuedCompletionStatus获取通道数据的时候,数据长度为0,而缓冲区中的内容也确实为空。我初步判断是因为客户端非法关闭了链接,不知道是不是这个原因?求讨论
[解决办法]
先判断函数的返回是否为TRUE或者FALSE.
然后可以判断GetQueuedCompletionStatus函数的第二个参数lpNumberOfBytes和lpOverlapped结构体中的数据是否有效,如果*lpNumberOfBytes的值为0,OVERLAPPED结构体中的数据也合法,可以认为是客户端关闭了连接,这个时候你就需要closesocket关闭socket套接字,可能还需要释放一下内存的操作(比如之前分配的PER_HANDEL/PER_IO结构)

热点排行