linux下tcp通信怎么限制客户端的连接数量

rt,我写了个多线程服务器端,一个客户端在服务器那对应一个线程来处理通信,我想在服务器端设置一个最大连接数,查找当前正在连接的数量,如果超出就断开后续的请求,请问怎么实现... rt, 我写了个多线程服务器端,一个客户端在服务器那对应一个线程来处理通信,我想在服务器端设置一个最大连接数,查找当前正在连接的数量,如果超出就断开后续的请求,请问怎么实现,可以贴代码的 ,没分了 不好意思,对linux 懂得不多
我是问在server代码中怎么实现 而不是命令执行
展开
 我来答
ace_fei
推荐于2016-09-12 · TA获得超过2013个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:723万
展开全部
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
追问
已经解决,用的是互斥,在accept 后,加1,然后判断是否超过了最大数,线程处理结束后就减掉
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
百度网友d3d7ee0a
2014-01-24 · TA获得超过142个赞
知道答主
回答量:69
采纳率:0%
帮助的人:17.8万
展开全部
listen(int fd, int backlog); 设置第二个参数就行。
追问
listen的第二个参数不是限制读取的队列的长度吗  和连接数没有关系吧
追答
超过那个数,再有客户端就连不进去了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yxj1124
2014-01-24 · 超过32用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:85.9万
展开全部
iptables防火墙
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式