c++ - Socket 通信中如何清除接收区缓存?

浏览:49日期:2023-05-22

问题描述

大家好

我是初次使用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 触发指令之前,我如何清除掉接收区缓存

问题解答

回答1:

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

参考:

http://stackoverflow.com/questions/22268130/flush-the-tcp-receive-data-bufferhttp://developerweb.net/viewtopic.php?id=6564https://www.quora.com/Is-there-a-way-to-clear-everything-thats-in-the-socket-buffer

相关文章: