社区
网络编程
帖子详情
如何知道socket发送缓冲区的内容和大小?
weixin_44690344
2019-04-26 04:26:17
mfc,c++,vs2015,使用socket,tcp网络编程,发送端sendX个数据,把接收端的缓冲区大小设置为Y,(X大于Y),发送端执行send函数后,接收端不执行recv,那么请问如何知道发送方缓冲区还有哪些数据没有发送?以及这些数据的大小?发送方能不能自己调用哪个函数来实现上述疑问,而不需要接收方来告诉他已经收到了什么,他自己再去减!请大神帮忙,谢谢!
...全文
1283
5
打赏
收藏
如何知道socket发送缓冲区的内容和大小?
mfc,c++,vs2015,使用socket,tcp网络编程,发送端sendX个数据,把接收端的缓冲区大小设置为Y,(X大于Y),发送端执行send函数后,接收端不执行recv,那么请问如何知道发送方缓冲区还有哪些数据没有发送?以及这些数据的大小?发送方能不能自己调用哪个函数来实现上述疑问,而不需要接收方来告诉他已经收到了什么,他自己再去减!请大神帮忙,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
待续_1006
2019-06-03
打赏
举报
回复
这是TCP/IP的基础常识了,建议先看下基本概念,一点一点来!tcp/ip详解
Yofoo
2019-05-31
打赏
举报
回复
1
send的返回值会告诉你实际进入协议(发送)的大小, 通讯双方都会缓冲, 如从A 发到B A 有发送缓冲 假设为 2 B 有接收缓冲,假设为 4 在A 使用send 来发送10个, 如果B不recv, 那么情况一般就是 send返回 6, 有4个已经发送到B的缓冲, 有2个在本地缓冲
Eleven
2019-05-28
打赏
举报
回复
这个需要你自己上层定一个协议,告诉数据的大小,然后再按这个大小来接收后续的数据~
PDD123
2019-05-24
打赏
举报
回复
肯定是有其他问题,否则你要send,就会recv tcp协议,能保证你接收到的数据的顺序和你发送的顺序一致(不考虑丢包)。 但是,不保证每一次recv都能接收到完整的一个数据包,也不能保证每一次recv都只接收到一个数据包。 在实际发送过程中,会对你发送的包进行拆分或者合并。 所以你必须使用一个应用层协议来读取数据,可以用已有的通用协议,也可以自定义。 顺便说一句,以后如果开发大型项目,还得考虑有人捣乱,发送异常数据的情况。
zgl7903
2019-04-27
打赏
举报
回复
按 帧头+长度+数据+校验+帧尾的方式 定个传输协议, 发送和接收都按协议就很容易做到
如何获取
SOCKET
发送缓冲区
使用
大小
问题描述:
socket
编程,发送少量数据时,send/write等发送函数会立即返回成功,发送的数据会存在TCP
发送缓冲区
中,依靠TCP协议栈自身的重传机制来保证该数据 被接收端收到;我们的问题是 发送端应用程序 如何判断 少量数据 已经成功发送到接收端? 解决思路:发送数据存在缓冲区中,我们判断
发送缓冲区
大小
变化,即可获知发送是否成功;具体方法如下:发送数据后,获得已使用缓冲区
大小
buf,
java程序udp缓存区
大小
,如何设置
Socket
UDP下的缓冲区
大小
? C#
我们
知道
UDP接收,我们使用
Socket
.ReceiveFrom或UdpClient.receive
Socket
.Receive从你接收一个字节数组来放入udp数据.UdpClient.receive直接返回数据所在的字节数组我的问题是如何设置
Socket
中的缓冲区
大小
.我认为操作系统维护自己的接收UDP数据缓冲区,对吧?例如,如果一个udp数据包被发送到我的机器,操作系统将把它放到一个缓冲区,等...
Socket
发送缓冲区
接收缓冲区快问快答
首先,我们要明确一下,通过
socket
发送数据之后(调用发送方法),数据并不是会直接发送到接收方。整个过程简略图如下:最终数据发送是要通过网卡的,但是
socket
没法直接将数据发送到网卡,所以只能先将数据发送到操作系统数据
发送缓冲区
。然后网卡从数据
发送缓冲区
中获取数据,再发送到接收方。
socket
接收数据,也不是直接从对端获取的。整个过程简略图如下:首先接收方机器网卡接收到发送方的数据后,先将数据保存到操作系统接收缓冲区。...
设置
socket
缓冲区
大小
发送数据时候先把数据发送到
socket
缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(
socket
默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的
大小
,可以通过setsockopt函数实现。optLen :指向缓冲区
大小
变量的长度。
socket
:传输数据的
socket
。SO_RCVBUF:接受数据的缓冲区。SOL_
SOCKET
:基本套接口。optVal: 缓冲区
大小
。
设置
Socket
缓冲区的
大小
在32位的操作系统下,如果我没有记错的话:
socket
缓冲区默认
大小
是8192B,但是有些时候我们在传输大文件的时候或者几十G的文件的时候我们想。MessageBox("获取服务端设置
SOCKET
发送缓冲区
大小
失败");//设置系统发送数据为默认的倍数。MessageBox("设置
SOCKET
发送缓冲区
大小
失败");这里我也是摘抄一个网友的博客,进行了修改。
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章