WSAEventSelect方式下 调用WSAWaitForMultipleEvents后lNetworkEvents的值是 33
时间:2011-11-25
来源:互联网
::WSAEventSelect(sok, event, FD_READ|FD_CLOSE);
注册 FD_READ|FD_CLOSE 这两个事件后
C/C++ code
wsaEvent.lNetworkEvents 的值是33 相当于 FD_READ|FD_CLOSE,但这个时候recv 并没有接收完毕 如果此时处理FD_CLOSE 调用closesocket 关闭连接的话,缓存中的内容就接收不到了.如果不处理FD_CLOSE 那么后面也不会再发送FD_CLOSE 就没有机会调用closesocket了
我对网络编程不是太熟悉,不知道大家遇到这个情况是怎么处理的.
注册 FD_READ|FD_CLOSE 这两个事件后
C/C++ code
WSANETWORKEVENTS wsaEvent; ::WSAEnumNetworkEvents(soc, event, &wsaEvent);
wsaEvent.lNetworkEvents 的值是33 相当于 FD_READ|FD_CLOSE,但这个时候recv 并没有接收完毕 如果此时处理FD_CLOSE 调用closesocket 关闭连接的话,缓存中的内容就接收不到了.如果不处理FD_CLOSE 那么后面也不会再发送FD_CLOSE 就没有机会调用closesocket了
我对网络编程不是太熟悉,不知道大家遇到这个情况是怎么处理的.
作者: zzw827 发布时间: 2011-11-25
记得只要注册FD_READ就可以了。close的时候也会signal。read的时候区别是有数据来了还是关闭了。
作者: ndy_w 发布时间: 2011-11-25
FD_READ|FD_CLOSE. 你后来等待到event时.获得事件下标.还可以判断是哪个event. FD_READ还是FD_CLOSE. 具体网上搜下.. FD_CLOSE当网络断开时并不会100%获得这个事件.
作者: smwhotjay 发布时间: 2011-11-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28