EasyIocp - 勘误

EayIocp有更改会在这里列出日志,建议大家去这里下载最新代码。


1)2014年7月4日 - 意外关闭监听套接字的bug

    CSDN网友kkia进行了如下操作:“试了下 ,服务端正常开启,客户端把sendMessage发送数据注释掉,然后编译运行,此时客户端程序停留在recv函数处,到现在一切正常,但是点击客户端窗口的关闭后,服务端的线程全部退出了。。。也就是崩溃了,我刚接触到这个,也不知道什么原因。”。

    我自己尝试了一下EasyIocp输出如下图。WSAGetLastError给出错误消息如下:

   

    错误原因是关闭客户端时,EasyIocpError::DealCompletionError函数处理错误ERROR_NETNAME_DELETED(ErrorCode = 64),此时调用EasyClients::RemoveClient函数时关闭了套接字,而此套接字是监听套接字,然后造成了(ErrorCode=995)的错误消息。此bug在于EasyClients::RemoveClient实现有问题,不应该一开始就调用closesocket,而是应该查找是否有此客户端若有才进行清理操作

    函数EasyClients::DealCompletionError未区分出现错误的套接字是监听套接字,还是数据传输套接字,而是简单的对他们进行统一处理。若需要更详细的处理错误,可以在此函数中调用CompletionKey::GetKeyType获得套接字类型,根据监听套接字或是数据传输套接字进行错误处理。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值