如何在WinSock中清除接收缓冲区

时间:2010-09-23 13:16:23

标签: buffer winsock

我去寻找这个,发现至少有一个人问但​​没有回答。我认为需要启动一个发送和接收段(在同一个套接字连接上的一个更大进程的一部分),并期望接收缓冲区中没有任何内容。

我没有看到答案,但在我自己意识到另一种看起来更干净的方式之前确实想到了这个问题(在下一段中读到“结束”)。只需将RecieveTimeout设置为1,或者,如果您认为发件人仍处于发送过程中,则会略微增加一些值。然后只需使用socketflags = 0调用Receive并丢弃结果。

有没有人有更好的方法?

2 个答案:

答案 0 :(得分:0)

这项要求的起源是什么?你真的需要抛弃数据吗?

答案 1 :(得分:0)

我以为我当时做了,但后来只是阅读并缓存了结果,然后从缓存中删除了。我正在搜索发送命令时出现的不同结果序列(字符串)。发送的下一个命令不能假定接收缓冲区中不再有任何字符,因为协议“标准”指定响应可能以CR或LF或CRLF或LFCR结束或什么都不结束。不同组织对此协议的实现方式不同,因为它的定义非常松散。