中国施工企业管理协会提供哪些15个HTML5手机网站模板?

摘要:15个html5手机网站模板,中国施工企业管理协会,jsp做网站的流程,wordpress中文官网地址今天就从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核)&am
15个html5手机网站模板,中国施工企业管理协会,jsp做网站的流程,wordpress中文官网地址今天就从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核)#xff0c;当然由于listen的backlog参数和半连接hash表以及全连接队列都相关#xff0c;在这里也一块讲了。 Server端Socket需要Listen 众所周知#xff0c;一个Serv…今天就从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核)当然由于listen的backlog参数和半连接hash表以及全连接队列都相关在这里也一块讲了。 Server端Socket需要Listen 众所周知一个Server端Socket的建立需要socket、bind、listen、accept四个步骤。 今天笔者就聚焦于Listen这个步骤。 代码如下: void start_server(){// server fdint sockfd_server;// accept fd int sockfd;int call_err;struct sockaddr_in sock_addr;......call_errbind(sockfd_server,(struct sockaddr*)(sock_addr),sizeof(sock_addr));if(call_err -1){fprintf(stdout,bind error!\n);exit(1);}// 这边就是我们今天的聚焦点listencall_errlisten(sockfd_server,MAX_BACK_LOG);if(call_err -1){fprintf(stdout,listen error!\n);exit(1);} }首先我们通过socket系统调用创建了一个socket其中指定了SOCK_STREAM,而且最后一个参数为0也就是建立了一个通常所有的TCP Socket。在这里我们直接给出TCP Socket所对应的ops也就是操作函数。 资料直通车最新Linux内核源码资料文档视频资料 内核学习地址Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 Listen系统调用 好了现在我们直接进入Listen系统调用吧。 #include sys/socket.h // 成功返回0,错误返回-1,同时错误码设置在errno int listen(int sockfd, int backlog);注意这边的listen调用是被glibc的INLINE_SYSCALL装过一层其将返回值修正为只有0和-1这两个选择同时将错误码的绝对值设置在errno内。 这里面的backlog是个非常重要的参数如果设置不好是个很隐蔽的坑。 对于java开发者而言基本用的现成的框架而java本身默认的backlog设置大小只有50。这就会引起一些微妙的现象这个在本文中会进行讲解。 接下来我们就进入Linux内核源码栈吧 listen|-INLINE_SYSCALL(listen......)|-SYSCALL_DEFINE2(listen, int, fd, int, backlog)/* 检测对应的描述符fd是否存在不存在返回-BADF|-sockfd_lookup_light/* 限定传过来的backlog最大值不超出 /proc/sys/net/core/somaxconn|-if ((unsigned int)backlog somaxconn) backlog somaxconn|-sock-ops-listen(sock, backlog) inet_listen值得注意的是Kernel对于我们传进来的backlog值做了一次调整让其无法内核参数设置中的somaxconn。 inet_listen 接下来就是核心调用程序inet_listen了。
阅读全文