如何知道socket发送缓冲区的内容和大小?

weixin_44690344 2019-04-26 04:26:17
mfc,c++,vs2015,使用socket,tcp网络编程,发送端sendX个数据,把接收端的缓冲区大小设置为Y,(X大于Y),发送端执行send函数后,接收端不执行recv,那么请问如何知道发送方缓冲区还有哪些数据没有发送?以及这些数据的大小?发送方能不能自己调用哪个函数来实现上述疑问,而不需要接收方来告诉他已经收到了什么,他自己再去减!请大神帮忙,谢谢!
...全文
1283 5 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
按 帧头+长度+数据+校验+帧尾的方式 定个传输协议, 发送和接收都按协议就很容易做到

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧