社区
网络编程
帖子详情
怎么修改socket接收发送缓冲区大小?
gloriajie
2004-08-28 10:37:06
我想发送接收大约10k的数据,可是socket接收发送缓冲区只有1024字节,我该怎么办呢?
是不是可以用setsockopt改变缓冲区的大小呢?怎么用呀?
这样有什么不好吗?
...全文
1088
10
打赏
收藏
怎么修改socket接收发送缓冲区大小?
我想发送接收大约10k的数据,可是socket接收发送缓冲区只有1024字节,我该怎么办呢? 是不是可以用setsockopt改变缓冲区的大小呢?怎么用呀? 这样有什么不好吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
allenq
2004-08-29
打赏
举报
回复
UP
setsockopt
large_small
2004-08-29
打赏
举报
回复
UP
setsockopt
goodname008
2004-08-29
打赏
举报
回复
如果用的是MFC中的CAsyncSocket或CSocket类,可以使用其成员函数SetSockOpt。
如果用的是Windows Socket Functions,可以直接使用API函数setsockopt。
lincoder666
2004-08-29
打赏
举报
回复
mark
gloriajie
2004-08-28
打赏
举报
回复
你能告诉我SOL_SOCKET是什么意思吗,谢谢
DentistryDoctor
2004-08-28
打赏
举报
回复
socket的接收缓冲区为8k,可以用setsockopt/CSocket::Ioctl设置SO_RCVBUF设置。
int nRecvBuf=32768;
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
gloriajie
2004-08-28
打赏
举报
回复
我把发送的数据的最大量(也就10k左右)估计出来,缓冲区设的足够大就行了,不用什么循环和控制算法了不是就?我是觉得这样比较简单啦。这样的坏处是不知道数据大小的时候有可能不够用是吗?还有别的坏处吗?耗费资源什么的?
循环发送那对方也要循环接受了?两方怎么同步呢?
PPFish
2004-08-28
打赏
举报
回复
当然,也是需要设计一个控制算法的
PPFish
2004-08-28
打赏
举报
回复
为什么不可以多次发送呢?毕竟设置Buffer的方法治标不治本,如果某次数据的大小超过了缓冲区的容量,是不是又要设置一次呢?我的做法就是在一个while循环里面,分多次发送
c4313848
2004-08-28
打赏
举报
回复
SOL_SOCKET这是一个socket选项,像广播,就是在这里设置
Python中的
Socket
与 ScoketServer 通信及遇到问题解决方法
Socket
有一个缓冲区,缓冲区是一个流,先进先出,发送和取出的可自定义
大小
的,如果取出的数据未取完缓冲区,则可能存在数据怠慢。其中【recv(1024)】表示从缓冲区里取最大为1024个字节,但实际取值
大小
是不确定的,推荐其值小于等于8192。 黏包问题:
Socket
发送两条连续数据时,可能最终会拼接成一条进行发送 解决方法一: 两条数据间进行延时发送,如【tiem.sleep(0.5) #延时0.5s】 解决方法二: 每次发送后等待对方确认
接收
信息数据,发送一条后就立即
接收
等待 解决方法三: 设定
接收
数据
大小
,发送端每次发送需要发送的数据的数据
大小
,
接收
端通过设置【recv(xx)】只接
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}'
Socket
编程快速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理问题的啊aasa 能力,完善你的编程思想与知识体系。论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理问题的能力,完善你的编程思想与知识体系。
如何获取
SOCKET
发送缓冲区
使用
大小
问题描述:
socket
编程,发送少量数据时,send/write等发送函数会立即返回成功,发送的数据会存在TCP
发送缓冲区
中,依靠TCP协议栈自身的重传机制来保证该数据 被
接收
端收到;我们的问题是 发送端应用程序 如何判断 少量数据 已经成功发送到
接收
端? 解决思路:发送数据存在缓冲区中,我们判断
发送缓冲区
大小
变化,即可获知发送是否成功;具体方法如下:发送数据后,获得已使用缓冲区
大小
buf,
socket
接收
与
发送缓冲区
大小
1.查看默认设置 转自:https://www.cnblogs.com/x_wukong/p/8444557.html cat /proc/sys/net/core/rmem_max 212992 cat /proc/sys/net/core/wmem_max 212992 都是208kb。 通过set
socket
opt时,设置SO_SNDBUF、SO_RCVBUF这连个默认缓冲区的值,再用getsockopt获取设置的值,发现返回值是设置值的两倍。 (1)当设置的值val > 最大值s
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章