欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 【服务器通信-listen】——int listen(int sockfd, int backlog)

【服务器通信-listen】——int listen(int sockfd, int backlog)

2025/5/5 11:54:15 来源:https://blog.csdn.net/the_dry/article/details/147669561  浏览:    关键词:【服务器通信-listen】——int listen(int sockfd, int backlog)

#include <sys/types.h> 

#include <sys/socket.h>

int listen(int sockfd, int backlog);

sockfd:

    socket文件描述符

backlog:

    在Linux 系统中,它是指排队等待建立3次握手队列长度,即同时能处理的最大连接要求

返回值:

成功返回0,失败返回-1。

系统修改:

查看系统默认backlog

cat /proc/sys/net/ipv4/tcp_max_syn_backlog

改变 系统限制的backlog 大小

vim /etc/sysctl.conf

最后添加
net.core.somaxconn = 1024

net.ipv4.tcp_max_syn_backlog = 1024


保存,然后执行
sysctl -p

解释分析:

典型的服务器程序可以同时服务于多个客户端

当有客户端发起连接时,服务器调用的accept()返回并接受这个连接

如果有大量的客户端发起连接而服务器来不及处理,未accept的客户端就处于连接等待状态

listen()声明sockfd处于监听状态,并且最多允许有backlog个客户端处于连接待状态

如果接收到更多的连接请求就忽略。

注:

listen()并未开始接收连线,只是设置socket 为 listen 模式

真正接收 client 端连线的是 accept()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词