linux下tcp通信怎么限制客户端的连接数量
rt,我写了个多线程服务器端,一个客户端在服务器那对应一个线程来处理通信,我想在服务器端设置一个最大连接数,查找当前正在连接的数量,如果超出就断开后续的请求,请问怎么实现...
rt, 我写了个多线程服务器端,一个客户端在服务器那对应一个线程来处理通信,我想在服务器端设置一个最大连接数,查找当前正在连接的数量,如果超出就断开后续的请求,请问怎么实现,可以贴代码的 ,没分了 不好意思,对linux 懂得不多
我是问在server代码中怎么实现 而不是命令执行 展开
我是问在server代码中怎么实现 而不是命令执行 展开
3个回答
展开全部
listen的backlog参数指定的是已经三次握手完成,达到了established状态但是等待accept的队列的容量。当这个容量超过上限的时候服务器端便不处理客户端的三次握手了。这个队列的容量当然不是楼主所说的并发连接数。
但是lisen的再后一道程序便是accept了。如果你想要的是在tcp并发连接数量超过上限的时候服务器不再处理了三次握手那么只有两种办法:
1.关闭listen的socket
2.自己修改tcp协议栈的实现,当然这个就比较麻烦了。
用iptables防火墙来限制tcp连接,
如下,限制用户的tcp连接数为50
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT
但是lisen的再后一道程序便是accept了。如果你想要的是在tcp并发连接数量超过上限的时候服务器不再处理了三次握手那么只有两种办法:
1.关闭listen的socket
2.自己修改tcp协议栈的实现,当然这个就比较麻烦了。
用iptables防火墙来限制tcp连接,
如下,限制用户的tcp连接数为50
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT
追问
已经解决,用的是互斥,在accept 后,加1,然后判断是否超过了最大数,线程处理结束后就减掉
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
listen(int fd, int backlog); 设置第二个参数就行。
追问
listen的第二个参数不是限制读取的队列的长度吗 和连接数没有关系吧
追答
超过那个数,再有客户端就连不进去了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
iptables防火墙
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |