免费注册 查看新帖 |

Chinaunix

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

问题:Connection abort before accept() returns [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-16 10:57 |只看该作者 |倒序浏览
:wink:
      Unix Network Programming的5.11

      "Connection abort before accept() returns"

      在linux按照书上的程序试了一把,每次accept都能成功返回,不会block,也不会失败。和书上说的不是一回事,不知道哪位大虾也试过?

      很想知道listen()怎么管理连接请求的两个队列的?比如多个线程同时accept同一个socket,listen()是否内部实现的互斥访问的?

论坛徽章:
0
2 [报告]
发表于 2003-05-16 13:06 |只看该作者

问题:Connection abort before accept() returns

应该不是,系统只能保证一定数量的数据是可以原子接收
这和管道应该相似
你可以看看管道中有没有对应的说明

管道中对一定数量内数据就是能保证原子接收

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2003-05-16 13:23 |只看该作者

问题:Connection abort before accept() returns

很想知道listen()怎么管理连接请求的两个队列的?比如多个线程同时accept同一个socket,listen()是否内部实现的互斥访问的?

回答:listen通过内核维护的两个队列来提供给accept的请求,如果一个accept请求已经完成了三路握手(有些不需要改步骤),那么就放在已完成队列,TCP状态为ESTABLISHED。如果没有完成(例如刚接受到一个或者两个TCP分节),那么放入没有完成的那个队列,此时TCP的状态为SYN_RECV。

网络编程基础V2版,计划好好讨论这些相关问题的,可惜没能继续下去,以后有时间up一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP