社区
C语言
帖子详情
网络编程中listen函数中的backlog最多能设置多少?
llhwjj
2011-02-16 11:07:31
网络编程中listen函数中的backlog最多能设置多少?我在用服务器短设置的时候我把它设置成10000,然而在我的接收中为什么还会是那么的慢,我也用一个客服端不间断的发送一万个sock packet,但是接收时间好长,并且在处理中有时候快有时候慢,这该怎么去处理
...全文
660
5
打赏
收藏
网络编程中listen函数中的backlog最多能设置多少?
网络编程中listen函数中的backlog最多能设置多少?我在用服务器短设置的时候我把它设置成10000,然而在我的接收中为什么还会是那么的慢,我也用一个客服端不间断的发送一万个sock packet,但是接收时间好长,并且在处理中有时候快有时候慢,这该怎么去处理
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jaylong35
2011-02-18
打赏
举报
回复
[Quote=引用 4 楼 llhwjj 的回复:]
引用 3 楼 jaylong35 的回复:
listen只是用来开启,并设置accept队列的长度
而与客户端信息的收发没有直接关系。
收发速度只与你服务器本身的设计和数据接收处理方式有关
所以,你要改变处理速度,并不是看listen的backlog,而是要修改数据接收处理部分
就是recv部分
对于recv就是一个函数,这个接收的快慢会影响到服务器的性能吗?对于服务器这段就是一个……
[/Quote]
这个要看你怎么处理这部分数据了,一般服务器都是只接收数据,就是把数据收下来保存好,数据相关的处理放到另外开启一个线程来做,这样,就可以加快接收速度了。
你可以测试一下,只接收数据,不做其它处理时候的速度,这个才是传输速度
比如
接收数据线程
void * run(void*)
{
while(1)
{
recv(...);
processdata();
}
}
以上这样的方式,会影响你数据接收的,因为要处理好了,才会再接收。而不能一直接收。
你可以按以下来处理:
datalist;//用来保存数据的一个列表,或是其它的结构。
//接收线程
void * runrecv(void *)
{
while(1)
{
recv(...);
datalist.pushback(data);//这个只是往列表里面插入一个数据,会比处理快
}
}
//数据处理线程
void * runprocess(void *)
{
while(1)
{
//这里就省略了,总的就是从数据列表中取数据,处理。
}
}
这样,就不会因为处理数据时间过长,而影响了数据接收,这个一般都用在异步模式里面
l0vehj
2011-02-17
打赏
举报
回复
这个跟你接收慢没关系吧,这个只控制你没有accept的队列能保持多少个链接吧,剩下的丢弃了。
llhwjj
2011-02-17
打赏
举报
回复
[Quote=引用 3 楼 jaylong35 的回复:]
listen只是用来开启,并设置accept队列的长度
而与客户端信息的收发没有直接关系。
收发速度只与你服务器本身的设计和数据接收处理方式有关
所以,你要改变处理速度,并不是看listen的backlog,而是要修改数据接收处理部分
就是recv部分
[/Quote]
对于recv就是一个函数,这个接收的快慢会影响到服务器的性能吗?对于服务器这段就是一个接收函数,那怎么能让它的处理速度快点呢!谢谢你能给以帮助
jaylong35
2011-02-17
打赏
举报
回复
listen只是用来开启,并设置accept队列的长度
而与客户端信息的收发没有直接关系。
收发速度只与你服务器本身的设计和数据接收处理方式有关
所以,你要改变处理速度,并不是看listen的backlog,而是要修改数据接收处理部分
就是recv部分
justkk
2011-02-17
打赏
举报
回复
这个backlog 只是一个提示,具体有效数值与操作系统有关
看看《Unix网络编程》
像楼上说的,这个参数指定接收队列的长度
如果队列未满,在服务器accept之前,客户端也可以成功连接
学习笔记-对于
List
en
函数
中
的back
log
参数的理解
我在学习
list
en
函数
的过程
中
,一开始对于back
log
参数有股很模糊的理解,并不知道这个东西是干什么的,有什么用处? 在后面的学习
中
,查询了一些资料,在这里对于我自己理解的back
log
参数做一个简单的整理,方便自己以后查阅.
list
en
函数
的回顾 back
log
参数和TCP/IP协议有密切相关的联系 要了解back
log
参数的作用,需要回到
list
en
函数
中
来进行理解的. 首先我们...
网络编程
之
list
en
函数
基本TCP客户端/服务器程序的套接字
函数
list
en
函数
仅由TCP服务调用,它做两件事 1.当socket
函数
创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect连接的客户套接字。
list
en
函数
把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求。如下图所示,调用
list
en
导致套接字从CLOSED状态转换到
LIST
EN
状态。 ...
list
en
函数
网络编程
–
list
en
函数
1.分析 问题:我们知道在
网络编程
中
,
list
en
接口是用来建立socket监听的,其参数只有两个。它的第二个参数是什么?三次握手
中
的半连接、完全连接在
list
en
监听
中
充当着什么角色?
函数
原型:int
list
en
(int sockfd, int back
log
);当socket
函数
创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连
List
en
- Linux C++
网络编程
(二十一)
一:
list
en
()队列剖析
list
en
():监听端口,用在 TCP连接
中
的 服务器端 角色;
list
en
()
函数
调用格式: int
list
en
(int sockfd, int back
log
); 要理解好back
log
这个参数,我们需要先谈一谈 “监听套接字 队列”的话题; (1.1)监听套接字的队列 对于一个调用
list
en
()进行监听的套接字,操作系统会给这个套接字 维护两个队列; a)未完成连接队列 【保存连接用的】 当客户端 发送tcp连接三次握手的第一次【sy..
关于
list
en
函数
的back
log
unix
网络编程
中
这样解释 指未完成队列和已完成队列之和 man
list
en
man 手册上这样解释: The behavior of the back
log
argum
en
t on TCP sockets changed with Linux 2.2. Now it specifies the queue l
en
gth for completely established s...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章