社区
通信技术
帖子详情
怎样设置一个socket的发送缓冲区的长度,它的默认的发送缓冲区的大小为多少啊?
xzhangjie
2001-11-02 07:18:33
加精
...全文
1165
9
打赏
收藏
怎样设置一个socket的发送缓冲区的长度,它的默认的发送缓冲区的大小为多少啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
copy_paste
2001-12-09
打赏
举报
回复
GZ(不允许回复为空!!不允许有 gz、up!!!!来点创意吧!!!)
xzhangjie
2001-11-05
打赏
举报
回复
thanks a lot!
也很高兴认识你."只懂WinSock",
小弟我对winsock不熟悉,但现在又要做网络方面的应用,谢谢两位大哥的帮助!
"只懂WinSock",我们也交个朋友吧.
我今年毕业,计算机专业的,在上海的一家实时监控公司做事,现在做远程监控的部分.
caiyi9000
2001-11-05
打赏
举报
回复
WINDOWS下默认的SOCKET发送和接收缓冲区大小均是4K,你可以用如下代码读出此大小,并修改发送和接收缓冲区。
int rcvbuf;
int rcvbufsize=sizeof(int);
if(getsockopt(m_Socket,SOL_SOCKET,SO_MAX_MSG_SIZE,(char*)&rcvbuf,&rcvbufsize)!
=SOCKET_ERROR)
{
if(rcvbuf<65536)
rcvbuf=65536;
setsockopt(m_Socket,SOL_SOCKET,SO_RCVBUF,(char*)&rcvbuf,rcvbufsize);
}
if(getsockopt(m_Socket,SOL_SOCKET,SO_SNDBUF,(char*)&rcvbuf,&rcvbufsize)!
=SOCKET_ERROR)
{
if(rcvbuf<65536)
rcvbuf=65536;
setsockopt(m_Socket,SOL_SOCKET,SO_SNDBUF,(char*)&rcvbuf,rcvbufsize);
}
lurenfu
2001-11-05
打赏
举报
回复
飞狐同志,不好意思,你的QQ加不上。我的是2067590,你加我吧,我们QQ交流
xzhangjie
2001-11-04
打赏
举报
回复
能交个朋友吗?
我的qq: 5550999
xzhangjie
2001-11-04
打赏
举报
回复
能写出设置的代码吗?:
回复人: lurenfu(什么都不懂) (2001-11-2 17:45:37) 得0分
理论上可以做到这一点。有一个libpcap库可以拦截TCP/IP的数据包,如果你拦截后马上伪造一个回应数据包应该是可以做到的,只是我也没有试验过。
顺便说一句,libpcat本是unix下的一个工具库,也有windows版的。我这儿就有
回复人: xzhangjie(飞天狐狸) (2001-11-2 19:12:26) 得0分
to lurenfu(什么都不懂)
能给我发一份window下的吗?我非常需要这个东西.谢谢先!
我的Email: xzhangjie@263.net
lurenfu
2001-11-03
打赏
举报
回复
我在windows98下面测试结果竟然是不可思议的send_buf_size = 256, recv_buf_size=1,这是怎么回事?有人来解不?
lurenfu
2001-11-03
打赏
举报
回复
我在linux内核2.4.10上测试结果为:send buf size = 16384(bytes),recv buf size = 87380(bytes)。
lurenfu
2001-11-03
打赏
举报
回复
你可以用getsockopt()的SO_SNDBUF获取发送缓冲区大小,用setsockopt的SO_SNDBUF设置发送缓冲区大小。同理,SO_RCVBUF是接收缓冲区大小
socket
之send与
发送缓冲区
大小
的关系
当使用send函数发送的数据
长度
超过
socket
发送缓冲区
大小
时,系统会自动分次发送。在Windows和Linux上,无论是阻塞还是非阻塞模式,send都会将大数据分帧进行传输。例如,发送3K数据到缓冲区
大小
为2K的
socket
,在不同系统中表现为分三次发送,每次发送的字节数接近缓冲区
大小
。
socket
发送缓存和接收缓存
大小
的获取和
设置
本文介绍如何在Linux环境下使用
socket
编程,通过getsockopt和setsockopt函数来获取和
设置
套接字的发送和接收缓冲区
大小
。并详细展示了
设置
缓冲区
大小
的具体代码实现及运行结果,解释了
设置
值与实际效果之间的差异原因。
linux
socket
缓冲区
默认
大小
本文详细介绍了TCP和UDP的收发缓冲区参数,包括
默认
值、最大值及最小值,涵盖了TCP接收缓冲区、TCP
发送缓冲区
、UDP接收缓冲区的
默认
设置
,以及这些缓冲区的最大和最小限制。
linux
socket
send函数和recv函数详解以及修改缓冲区
大小
本文详细解析了Linux下
Socket
编程中send和recv函数的工作流程,包括同步
Socket
的send如何将数据复制到
发送缓冲区
,以及recv如何从接收缓冲区获取数据。此外,还探讨了如何获取和修改
Socket
默认
缓冲区
大小
的方法。在Unix系统中,网络中断时,send和recv可能触发SIGPIPE信号导致进程终止。
一个
TCP
发送缓冲区
问题的解析
本文探讨了
一个
TCP
发送缓冲区
大小
设置
为4096字节的客户端在连接到服务器并每秒发送1024字节数据段时,发送队列
长度
最终达到14480字节的问题。内核实际上将SO_SNDBUF
设置
为用户值的两倍以考虑额外开销,但即便如此,仍无法解释观察到的值。深入分析发现,这与网卡的GSO功能启用有关,导致size_goal计算值增大。内核通过sk_buff扩容来适应超过限制的情况。建议关闭GSO特性或修改内核检查逻辑以解决此问题。
通信技术
4,394
社区成员
28,906
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章