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

大家好

我是初次使用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教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal