c++ - Socket 通信中如何清除接收区缓存?
高洛峰
高洛峰 2017-04-17 13:17:43
0
1
599

大家好

我是初次使用C++ Socket编程,在网上找到了很多这方面的样例
例如 http://www.cnblogs.com/Sniper-quay/archive/2011/06/22/2086636.html
现在有一个问题是,它需要每次关闭套接字
如果不关闭的话,我会出现以下问题

我建立了一个应答系统,客户端向服务器端发送触发指令:Trigger On
服务器端响应一个处理结果:Process 0001 OK
然后客户端调用receive函数接收到处理结果:Process 0001 OK

问题是,服务器端可以独立处理,但是它每次处理完都会向客户端发送信息,不管客户端是否有触发指令或者接收

例如:服务器端自行处理5次,它会自动向客户端发送五次处理结果

    Process 0020 OK
    Process 0021 OK
    Process 0022 OK
    Process 0023 OK
    Process 0024 NG
    

此时客户端发送触发指令:Trigger On
调用接收函数receive
客户端接收到的数据为:

    Process 0020 OK
    Process 0021 OK
    Process 0022 OK
    Process 0023 OK
    Process 0024 NG
    Process 0025 NG   
    

我的问题是,在客户端发送Trigger On 触发指令之前,我如何清除掉接收区缓存

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
黄舟

没有什么清理缓存的函数,在发送之前 读出来 然后丢掉就是了

参考:

http://stackoverflow.com/questions/22268130/flush-the-tcp-receive-data-buffer
http://developerweb.net/viewtopic.php?id=6564
https://www.quora.com/Is-there-a-way-to-clear-everything-thats-in-the-socket-buffer
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板