社区
通信技术
帖子详情
怎样设置一个socket的发送缓冲区的长度,它的默认的发送缓冲区的大小为多少啊?
xzhangjie
2001-11-02 07:18:33
加精
...全文
1111
9
打赏
收藏
怎样设置一个socket的发送缓冲区的长度,它的默认的发送缓冲区的大小为多少啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
缓冲区
大小
发送数据时候先把数据发送到
socket
缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(
socket
默认
的是1024×8=8192字节),这时候我们应该根据情况
设置
缓冲区的
大小
,可以通过setsockopt函数实现。optLen :指向缓冲区
大小
变量的
长度
。
socket
:传输数据的
socket
。SO_RCVBUF:接受数据的缓冲区。SOL_
SOCKET
:基本套接口。optVal: 缓冲区
大小
。
设置
SOCKET
的发送与接收缓冲区
设置
SOCKET
的发送与接收缓冲区
socket
缓冲区
大小
socket
缓冲区
大小
默认
为64 k 理论上最优
大小
为 带宽乘以往返时间(RTT通过ping ip地址的最后一行得到,如下图所示) 一般把缓冲区
大小
的最优化
设置
需要参照带宽与往返时间RTT得到的带宽延迟BDP。 假设应用程序是通过
一个
100Mbps 的局域网进行通信,其 RTT 为 10 ms,那么 BDP 就是: 100MBps * 0.010 sec / 8 = 3.125M
python查看并修改
socket
接收和
发送缓冲区
大小
查看并修改
socket
缓存区
大小
import
socket
sock =
socket
.
socket
() # 查看
默认
发送接收缓冲区
大小
recv_buff = sock.getsockopt(
socket
.SOL_
SOCKET
,
socket
.SO_RCVBUF) send_buff = sock.getsockopt(
socket
.SOL_
SOCKET
,
socket
.SO_SNDBUF) print(f'
默认
接收缓冲区
大小
:{recv_buff}。
默认
发送缓冲区
大小
:{send_buff}'
linux
socket
缓冲区
默认
大小
1. tcp 收发缓冲区
默认
值 [root@ www.linuxidc.com]#cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 4161536 87380 :tcp接收缓冲区的
默认
值 [root@ www.linuxidc.com]#cat /proc/sys/net/ipv4/tcp_wmem 4096 16384 4161...
通信技术
4,387
社区成员
28,918
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章