免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 17977 | 回复: 5
打印 上一主题 下一主题

请看我的代码!用非阻塞的accept函数要注意什么? [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
1 [报告]
发表于 2006-07-25 20:18 |显示全部楼层
返回-1出错,返回非负 就是文件描述符.就可以send ,recv等操作了.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-07-25 20:20 |显示全部楼层
不过为什么不把accept 放在while循环开始处呢?
我一般是这样做. accept放在while循环的开始处,有新来的连接 派生进程处理,如果需要响应多个描述符的时候就用非阻塞的方式.

[ 本帖最后由 mq110 于 2006-7-25 20:31 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-07-25 20:45 |显示全部楼层
线程池..比较节省资源,开始的时候开线程池的话,以后就不需要为创建花费资源了,节省时间.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2006-07-25 20:50 |显示全部楼层
原帖由 meijianchi 于 2006-7-25 20:44 发表


accept为-1的时候,是不是返回EWOULDBLOCK,还有什么我不知道了
这样不表明出错了吧?


这样肯定是出错了.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2006-07-25 20:56 |显示全部楼层
原帖由 meijianchi 于 2006-7-25 20:48 发表


我是初学者,还不会用这个东西,现在要写一个这样的程序,能跑起来

想用非阻塞的accept来做,不知道要怎么处理


线程池的非阻塞accept方式我没做过...也没验证过可行性.

单进程 accept非阻塞的方式行不通吗?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2006-07-25 21:03 |显示全部楼层
按理说,如果用select了,而且设置非阻塞状态了.

accept是不应该返回EWOULDBLOCK了.

刚才又man 了一下

EAGAIN or EWOULDBLOCK
              The socket is marked non-blocking and no connections are present to be accepted.


这个错误只需要重新continue就行了.

continue后 还有什么问题吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP