Chinaunix

标题: 问题:Connection abort before accept() returns [打印本页]

作者: blether    时间: 2003-05-16 10:57
标题: 问题:Connection abort before accept() returns
:wink:
      Unix Network Programming的5.11

      "Connection abort before accept() returns"

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

      很想知道listen()怎么管理连接请求的两个队列的?比如多个线程同时accept同一个socket,listen()是否内部实现的互斥访问的?
作者: 无双    时间: 2003-05-16 13:06
标题: 问题:Connection abort before accept() returns
应该不是,系统只能保证一定数量的数据是可以原子接收
这和管道应该相似
你可以看看管道中有没有对应的说明

管道中对一定数量内数据就是能保证原子接收
作者: 蓝色键盘    时间: 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一下。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2