完成端口(IOCP)怎么判断某个连接是否断开
来源:互联网 发布:mac dock 应用程序 编辑:程序博客网 时间:2024/04/30 22:41
完成端口函数:
BOOL GetQueuedCompletionStatus( HANDLE CompletionPort, LPDWORD lpNumberOfBytes, PULONG_PTR lpCompletionKey, LPOVERLAPPED* lpOverlapped, DWORD dwMilliseconds);
1.通常做法
目前查了大部分网上的关于完成端口,是否连接断线,大多是通过*lpNumberOfBytes==0来判断是否有连接断线的.之前我也是这么做的.但在实际游戏平台运行过程中,偶尔有游戏玩家反映,为什么我玩着玩着就断线了,由于网络原因复杂,并没有对此判断表示过怀疑.
2.发现问题
今天在调试网络部分代码,,发现有些时候*lpNumberOfBytes==0,但是再调用nCount = recv函数去收数据,竟然可以收到数据(nCount >0),反复测试了好几次,多是如此,那表明dwThancferred==0的时候,并不表示连接已经断开.
3.解决问题
从上述发现的问题可以看到,*lpNumberOfBytes==0时,再用nCount = recv去读取下数据,如果还是未读取到数据(nCount==0),那么就判断这个连接已经断开.
- 完成端口(IOCP)怎么判断某个连接是否断开
- 在完成端口IOCP模型判断客户端是否已关闭连接(掉线)
- 在完成端口IOCP模型判断客户端是否已关闭连接(掉线)
- 判断Socketl连接是否断开
- IOCP完成端口与长连接通讯
- iocp网络通信之如何判断客户端连接断开
- 判断远端是否已经断开连接。
- 判断客户端是否主动断开连接
- java判断socket服务器端是否断开连接
- java socket判断客户端是否断开连接
- JQ判断是否与服务器断开连接
- Tcp服务端判断客户端是否断开连接
- 完成端口(Iocp)。
- IOCP 完成端口
- iocp完成端口
- IOCP完成端口源代码
- IOCP完成端口详解
- IOCP--完成端口
- 数据库一些实用方法
- Calling C++ Unmanaged Class from C#
- 找出Mysql查询速度慢的SQL语句
- MySQL忘记超级用户口令的解决办法
- 面向对象技术之UML[四]
- 完成端口(IOCP)怎么判断某个连接是否断开
- 开始新的蓝图
- 端口技术 GetOverlappedResult
- CodeSmith数据访问模板
- JSTL标签
- Java如何操作Word, Excel, PDF文档
- j2ee性能调优之最小化资源压力测试法则
- 命令行启用/禁用网卡或网络连接
- 软件工程-软件目的需求开发与管理