一个关于IOCP本身的陷阱
来源:互联网 发布:软件项目管理教学大纲 编辑:程序博客网 时间:2024/05/04 04:31
邓立波 深圳,2007-8
作者联系方式:
email: libodeng@gmail.com
msn: libodeng@gmail.com
tel: 13510275799
版权/著作权所有 (C) 2007 邓立波 保留所有权利
警告:未经作者许可,任何人或组织不得转载,公开发布,拷贝,传播本文献的全部或部分
对使用AcceptEx建立的连接调用shutdown函数关闭返回失败
这是我在去年写服务器网络库遇到的一个问题,当时令我非常意外,那时一直以为是程序代码编写的问题。后来查阅了大量英文邮件列表,才发现是IOCP本身的一个问题。为避免读者陷于同样的问题,这里把它列出来,并给出解决方法。
对每个使用AcceptEx接受的连接套结字使用setsockopt设置SO_UPDATE_ACCEPT_CONTEXT选项,这个选项原义是把listen套结字一些属性(包括socket内部接受/发送缓存大小等等)拷贝到新建立的套结字,却可以使后续的shutdown调用成功。
/* SO_UPDATE_ACCEPT_CONTEXT is required for shutdown() to work fine*/
setsockopt( sockClient,
SOL_SOCKET,
SO_UPDATE_ACCEPT_CONTEXT,
(char*)&m_sockListen,
sizeof(m_sockListen) ) ;
- [转载]一个关于IOCP本身的陷阱
- 一个关于IOCP本身的陷阱
- 关于 IOCP 整合 SSL 的一个帖子
- 关于oracle 字符串比较的一个陷阱
- 关于IOCP的探讨
- 一个IOCP的小例子
- 一个最简单的IOCP.
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 一些关于IOCP的理解
- 关于全局变量和局部变量的一个小陷阱
- 关于C++中getline()函数的一个陷阱
- 关于C++11 range-for的一个陷阱
- RecyclerView 的一个陷阱
- 处理方法 "gist_geometry_ops" 的操作符类 "gist" 不存在
- 小米Android4.0系统网络问题解决
- JS+CSS简单实现DIV遮罩层显示隐藏
- android手势操作滑动效果触摸屏事件处理、GestureDetector用法
- $.ajax在谷歌浏览器传入中文乱码的情况
- 一个关于IOCP本身的陷阱
- android:ellipsize
- 超长整数的输入与输出
- SERVICE ROUTES
- eclipse重构myeclipse web项目
- 编写大容量和健壮的服务器系列—处理IOCP连接关闭
- tomcat内存配置,java.lang.OutOfMemoryError,PermGen space,Java heap space,
- 文件下载
- 分布式存储系统