免费注册 查看新帖 |

Chinaunix

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

请教accept的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-01 21:22 |只看该作者 |倒序浏览
请教各位, 就是在
connfd = accept(listenfd, NULL, NULL);
的情况下, 如果返回-1, 证明出错, 那么我还可不可以继续使用这个listenfd监听呢?

也就是说可不可以写成

  1. while (1)
  2. {
  3.       if ((connfd = accept(listenfd, NULL, NULL)) < 0)
  4.                continue;
  5. }
复制代码

这种形式, 谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-04-01 21:31 |只看该作者
我刚刚看了一下UNP V1上面的非阻塞accept部分, 觉得应该是可以的.
不晓得是不是这样子的?

论坛徽章:
0
3 [报告]
发表于 2008-04-01 21:33 |只看该作者

回复 #1 cunettenuc 的帖子

当然可以继续用listenfd,但你的代码显然不科学..

论坛徽章:
0
4 [报告]
发表于 2008-04-01 21:40 |只看该作者
原帖由 system888net 于 2008-4-1 21:33 发表
当然可以继续用listenfd,但你的代码显然不科学..


嗯. 谢谢, 在返回之后还应该检查一下errno, 根据不同的errno再决定是否继续调用accept()或者是就此退出, 是吧?

论坛徽章:
0
5 [报告]
发表于 2008-04-01 21:55 |只看该作者

回复 #4 cunettenuc 的帖子

你说对了,正确,但要提醒的是一些系统errno不能反映accept的错误!

论坛徽章:
0
6 [报告]
发表于 2008-04-01 22:09 |只看该作者
原帖由 system888net 于 2008-4-1 21:55 发表
你说对了,正确,但要提醒的是一些系统errno不能反映accept的错误!


麻烦你举几个例子, 非常感谢!

论坛徽章:
0
7 [报告]
发表于 2008-04-01 22:30 |只看该作者

回复 #6 cunettenuc 的帖子

在多线程的应用系统里,有专门的解决方式(如Solaris 有_REENTRANT标志)
在不同系统里移植时要注意的.
你的系统如果是简单的单线程,那问题不大!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP