最近在学习iocp,有几个问题没想明白,在这里请教各位:
1.我在网上看到有人说iocp的难点在于如何保证socket的正确释放,否则可能出问题,为什么说使用IOCP时要保证socket的正确释放呢?如果socket没有正确释放会怎么样呢?
2.使用iocp时要怎么做才能让socket正确释放呢?
1.我在网上看到有人说iocp的难点在于如何保证socket的正确释放,否则可能出问题,为什么说使用IOCP时要保证socket的正确释放呢?如果socket没有正确释放会怎么样呢?
2.使用iocp时要怎么做才能让socket正确释放呢?
解决方案 »
- MFC 中如何实现多界面的切换, 就像属性页那样的。
- 查找vector中相等或最接近的值
- 为什么我的对象的接口只有在dual情况下,才能在跨套间marshal
- CString类型的时间,如何取到年月日?
- 如何运用"<<"和">>"操作符进入数据读/写?
- 大家快来看一下,这是mfc bug吗?
- 我想找网上签名的东西,我做的一个ActiveX控件,没有证书,我不知道该怎么做?我怎么才能有证书呢?
- 有哪个函数能捕获桌面发生变化的消息
- CSDN,163.com,163.net等网站的登陆页面都包含了ActiveX控件,这些控件就安全吗??
- 由于我的指针被悬挂,导致SOCKET类型的变量被付给了一个很大的数,能通过数值判断SOCKET的真伪吗?
- 呵呵。马上就要渡假去了 - 准备玩完了努力上班去
- 急!!!注册com文件中文路径出错,VC6该如何配置不使用ATL.DLL
IOCP中的socket错误和资源释放处理方法
http://blog.chinaunix.net/u/20702/showart_258755.html
1.在windows网络编程(第二版)提到iocp时最后这样说“在进行重叠io操作时,应避免强行释放OVERLAPPED结构”,为什么在进行重叠io操作时,应避免强行释放OVERLAPPED结构呢?2.使用IOCP时要让socket释放,直接调用closesocket函数不就可以了吗?貌似没什么难点的,难道还要考虑什么问题?
--------
是可以,没什么难点。
但是附加在这个句柄上的其它资源的释放呢?使用IOCP时,你可能会在一个SOCKET HANDLE上投递多个操作。现在客户断开closesocket。那么所有这个SOCKET投递的操作都会返回。这样会有N个地方需要你去释放资源。delete同一资源会显然会出错,你如何保证只释放一次。