问一个socket客户端的问题

ztabwidget 2009-04-27 07:29:49
各位谁知道socket怎么可以清空接收缓冲区?
我传视频流linux客户端,然后一边接受,一边播放。现在客户这边一旦点击停止播放,重新再传其他数据的时候,播放的东西又是之前的前一部视频流的内容。我想这是因为接收缓冲区还有服务器发送的残留数据的原因。
所以想请教,怎样可以清空缓冲区呢?
...全文
85 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztabwidget 2009-04-28
  • 打赏
  • 举报
回复
谢谢指点,我对socket缓冲区的具体机制不熟悉,所以想直接刷新。因为键盘输入不是可以刷新缓冲的。
如果不能刷新,多接收一次也行。
datacodebugs 2009-04-28
  • 打赏
  • 举报
回复
貌似你应该清空的是从socket接收后存放由播放器使用的buffer吧,socket的缓存你不用管...
claritytear 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hairetz 的回复:]
见人家在图像区问过。
讲讲我的看法:
缓冲区是在底层和接口之间,貌似没有提供刷新缓冲区的。
tcp/ip只是保证数据在C/S两端安全传送哦,你这种问题应该不关协议栈的调用的事,你不需要的数据应该你自己来处理才对。
其实你可以在客户端点击停止播放这个事件时,再额外的recv数据,但是不播就是了撒,这样就相当于清空缓冲区的数据了。也不是很麻烦的事情吧。
[/Quote]
同意这个,收下,扔掉
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Loaden 的回复:]
这个真的没研究过。
但如果buf是你自己的,memset不就可以了吗?
[/Quote]

他不是想清空recv的时候用来接受数据的那个buf,因为recv在特定情况会接受到他不需要的数据,他想在底层的套接字缓冲区把数据刷掉。反正我觉得额外多读一次就可以了。
CJJACE 2009-04-27
  • 打赏
  • 举报
回复
好像要用udp吗,不是
  • 打赏
  • 举报
回复
tcp?
关闭当前,创建新的socket句柄试?
liliangbao 2009-04-27
  • 打赏
  • 举报
回复
帮顶!
老邓 2009-04-27
  • 打赏
  • 举报
回复
这个真的没研究过。
但如果buf是你自己的,memset不就可以了吗?
tangxu12 2009-04-27
  • 打赏
  • 举报
回复
帮顶
mengde007 2009-04-27
  • 打赏
  • 举报
回复
socket貌似不能清空缓冲区;它的数据流能缓冲到数组或文件里面;因此没有必要清空;
如果你想清空,那就清空数组或文件;
kingstarer 2009-04-27
  • 打赏
  • 举报
回复
有没有可能还有部分数据正在传输中?

要我来说最好在播一段新片前有一个开始标志
hust_terry 2009-04-27
  • 打赏
  • 举报
回复
接收缓冲区的大小是知道的,再次播放之前丢掉一些不就行了。
  • 打赏
  • 举报
回复
见人家在图像区问过。
讲讲我的看法:
缓冲区是在底层和接口之间,貌似没有提供刷新缓冲区的。
tcp/ip只是保证数据在C/S两端安全传送哦,你这种问题应该不关协议栈的调用的事,你不需要的数据应该你自己来处理才对。
其实你可以在客户端点击停止播放这个事件时,再额外的recv数据,但是不播就是了撒,这样就相当于清空缓冲区的数据了。也不是很麻烦的事情吧。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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