首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

网络编程惯用接口的内核实现-sys_listen()

2013-02-24 
网络编程常用接口的内核实现----sys_listen()listen()函数仅在TCP服务器端调用,它做两个事情:将套接字转换

网络编程常用接口的内核实现----sys_listen()

  listen()函数仅在TCP服务器端调用,它做两个事情:将套接字转换到LISTEN状态和设置套接上的最大连接队列。listen()对应的内核实现为sys_listen(),下面开始对其实现作具体的分析。

一、sys_listen()函数

  sys_listen()的源码实现及分析如下所示:

sys_listen()的代码流程和sys_bind()很像,都是先调用sockfd_lookup_light()获取描述符对应的socket实例,然后通过调用sock->ops中的操作接口来完成真正的操作。接下来看这段代码:

for (lopt->max_qlen_log = 3;     (1 << lopt->max_qlen_log) < nr_table_entries;     lopt->max_qlen_log++);

 五、结束语

  在listen()系统调用中,第二个参数backlog对服务器的程序影响是很大的,而且不同的系统对这个参数的使用可能有所不同。前面我们也提到了,《Unix网络编程》中对第二参数backlog的描述是连接队列和半连接队列的长度之和不超过backlog,但是在Linux中并不是这样,限于篇幅,后面会单独写一篇关于backlog参数的分析文章来详细介绍。

热点排行