Socket在接收数据,接收缓冲区里之前的数据没有清除

ozil1236 2014-04-20 07:21:00
如题,Socket用recv接收数据时,接收缓冲区里之前的数据没有清除掉,下次接收数据,仍然带有之前的数据,当接收缓冲区满了的时候,发现就不能接收新发送的数据了,求大神解惑
...全文
1553 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人乙2019 2014-04-21
  • 打赏
  • 举报
回复
引用 2 楼 ozil1236 的回复:
[quote=引用 1 楼 oyljerry 的回复:] 每次接收完数据后,就清零一下缓冲区
我用了memset清零了,还是一样,发送几次数据后,接收端就收不到新的数据了,都是之前已经发送过的[/quote]不可能的,你贴下代码
  • 打赏
  • 举报
回复
缓冲区清零没有用,清零和不清零一个样。你这里的缓冲区是用户层的缓冲区,只要指定了地址和长度就可以用来接收,和里面的既有内容无关。接收成功后,通过接收函数的返回值来判断接收到的长度,缓冲区中在此长度范围以内的就是接收到的数据,范围外的可能保持原来的值----保持不保持都没有关系。 你本次的接收收到了上次的数据,要么数据就是这么来发送的要么是你没看准长度以为重复了
ozil1236 2014-04-20
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
每次接收完数据后,就清零一下缓冲区
我用了memset清零了,还是一样,发送几次数据后,接收端就收不到新的数据了,都是之前已经发送过的
oyljerry 2014-04-20
  • 打赏
  • 举报
回复
每次接收完数据后,就清零一下缓冲区

18,363

社区成员

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

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