我正在用Winsock创建一个程序来创建一个客户端并将数据发送到服务器以响应哪个服务器回复了收到的特定数据块,这种情况持续了很多次。
问题是有时我的数据块1与数据块2重叠,所以我想在第一次完成接收后清除我的TCP接收缓冲区。
我也提到了这个链接How do I "flush" a TCP Client Buffer?但我不能等到接待发生
如何刷新TCP接收数据缓冲区? 我在visual c ++中做我的项目
答案 0 :(得分:2)
“刷新”接收缓冲区的唯一方法是从中读取。在第一次读取之后,继续从套接字读取,丢弃该数据,直到没有更多数据可供读取。使用select()
超时检测套接字何时仍在接收数据。
如果数据“重叠”,则表示服务器未在其末端正确发送数据(重叠send()
次来电),或者您没有正确读取数据。