社区
网络编程
帖子详情
如何清空socket缓存区的数据
paradise099
2007-03-21 03:30:18
当客户端向服务端发出命令后,在规定的超时时间里未收到回答便退出了.而第二次发命令时,读到的是第一次返回的数据.所以想在发命令前把输入缓存区清空.请问如何清空socket缓存区的数据?VC里有现成的函数吗?谢谢!
...全文
3750
20
打赏
收藏
如何清空socket缓存区的数据
当客户端向服务端发出命令后,在规定的超时时间里未收到回答便退出了.而第二次发命令时,读到的是第一次返回的数据.所以想在发命令前把输入缓存区清空.请问如何清空socket缓存区的数据?VC里有现成的函数吗?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
paradise099
2007-04-04
打赏
举报
回复
fantiyu_sr() ( ),每次发出命令后,客户端并不断开连接.所有不会有socket就被销毁了.
fantiyu_sr
2007-04-03
打赏
举报
回复
首先,VC中没有现成的函数,socket的缓冲区是内核来维护的
其次,不明白你为什么要清除这个缓冲区,当你上次客户端退出操作的时候缓冲区存在数据不假,但是客户端退出,socket就被销毁了,怎么还会有个缓冲区?
你的客户端下次连接服务器难道不是建立一个新的socket?缓冲区里面怎么可能还有数据?
Wenxy1
2007-04-03
打赏
举报
回复
同意 anjuta_c(天天学习不退步)
socket 的in/out buffer 是由内核来维护。
mapleneu
2007-04-02
打赏
举报
回复
有一个INTERNET_FLAG_RELOAD参数,可以达到这个功能
paradise099
2007-04-02
打赏
举报
回复
wo wo wo !没有人能给我一个满意的回答。在等等吧!
paradise099
2007-03-24
打赏
举报
回复
anjuta_c(天天学习不退步) 能推荐一本这方面的书吗??谢谢!!
shenyi0106
2007-03-23
打赏
举报
回复
BOOL setsockopt(SOCKET s,
int level,
int optname,
const char *optval,
int optlen);
那optval是干什么用的?
anjuta_c
2007-03-23
打赏
举报
回复
楼上,那是设置缓冲区大小,不是清空缓冲区
shenyi0106
2007-03-23
打赏
举报
回复
好象有个叫setSocketOpt()的函数可以设置缓冲区的吧,试试那个吧
anjuta_c
2007-03-23
打赏
举报
回复
你说的情况是一种非常正常的情况,还是去看看书吧
anjuta_c
2007-03-23
打赏
举报
回复
tcp recv
内核copy数据到socket接收缓冲区 ==== 应用进程调用recv copy socket接受缓冲区到应用进程.
tcp send
应用进程调用send copy数据到socket发送缓冲区,内核copy socket缓冲区数据到tcp/ip协议栈
socket缓冲区是由内核来维护的,是不能清楚的啊,老大
paradise099
2007-03-23
打赏
举报
回复
其实我这就是串命令了,上一条的返回超时,被下一条命令接收了.
paradise099
2007-03-23
打赏
举报
回复
???怎么没人回答呢??
pyrophile
2007-03-22
打赏
举报
回复
close(),退出连接就应该清空了
anjuta_c
2007-03-22
打赏
举报
回复
tcp recv
内核copy数据到socket接收缓冲区 ==== 应用进程调用recv copy socket接受缓冲区到应用进程.
tcp send
应用进程调用send copy数据到socket发送缓冲区,内核copy socket缓冲区数据到tcp/ip协议栈
socket缓冲区是由内核来维护的!!!
hamimelon
2007-03-22
打赏
举报
回复
closesocket()
paradise099
2007-03-22
打赏
举报
回复
ascloudy() ,你没理解我的问题。不是清空我自定义的,而是socket的缓冲区.
paradise099
2007-03-22
打赏
举报
回复
shoutsown? 是shutdown??
goodgod105
2007-03-22
打赏
举报
回复
好象是你没shoutsown的原因吧
ascloudy
2007-03-21
打赏
举报
回复
memset(buf, 0, sizeof(buf));
Python中的
Socket
与 ScoketServer 通信及遇到问题解决方法
Socket
有一个缓冲
区
,缓冲
区
是一个流,先进先出,发送和取出的可自定义大小的,如果取出的
数据
未取完缓冲
区
,则可能存在
数据
怠慢。本文通过实例代码给大家介绍Python中的
Socket
与 ScoketServer 通信及遇到问题解决方法 ,需要的朋友参考下吧
LINUX_API大全
LINUX-API大全
Socket
清空
缓存
区
情况一:知晓
缓存
区
中
数据
的大小 这种情况应该就不用多说了,直接循环的把
数据
都读取出来就行了。 情况二:不知道
缓存
区
中
数据
的大小 方案一 close一次
socket
,这个方案有效是有效,但这样的小问题还不至于如此大动干戈,因此不建议使用。 方案二 使用recv来读取,但是在阻塞模式下效率低下,因为在不知道
数据
的情况下,在最后一次读取的情况下需要等待到超时才会知道
数据
是否读取完毕。 方案三 使用fg...
linux
socket
清空
缓存
,linux
socket
清空
缓存
区
情况一:知晓
缓存
区
中
数据
的大小这种情况应该就不用多说了,直接循环的把
数据
都读取出来就行了。情况二:不知道
缓存
区
中
数据
的大小方案一close一次
socket
,这个方案有效是有效,但这样的小问题还不至于如此大动干戈,因此不建议使用。方案二使用recv来读取,但是在阻塞模式下效率低下,因为在不知道
数据
的情况下,在最后一次读取的情况下需要等待到超时才会知道
数据
是否读取完毕。方案三使用fgetc,通过判断f...
linux
socket
清空
缓存
,Linux如何
清空
Socket
缓冲
区
最近碰到一个问题,对于阻塞模式的
socket
通讯,如果要实现设备的命令控制,那么进入命令流前,缓冲
区
不能存有上次通讯没有取回的信息,否则一旦命令发出,然后读取缓冲
区
,很显然会读到上一次的剩余
数据
。做法当然很简单,就是先清除接收
区
的缓冲
数据
,可是如何清除?
socket
是这么接收
数据
的由于
socket
是以
数据
流的形式发送
数据
,接收方不知道对方一次性发送了多少
数据
,不能保证对方一次性发送的
数据
能在同一刻...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章