2010-09-23 246 views
1

我去搜索这个,发现至少有一个人询问但没有回答。我认为有必要启动一个发送和接收段(在同一个套接字连接上的一个更大的进程的一部分),并期望接收缓冲区中没有任何东西。如何清除WinSock中的接收缓冲区

我没有看到答案,但在我自己意识到围绕它的另一种方式看起来更清晰之前,我想到了这个杂交物(读到“在下一部分结束”)。只需将RecieveTimeout设置为1,或者如果您认为发件人仍处于发送过程中,则稍微大一些。然后用socketflags = 0调用Receive并丢弃结果。

有没有人有更好的方法?

+0

是的,我这样做的方式,将超时设置为1,并且读取 - 丢弃所有读取的内容,直到我获得WSAETIMEDOUT ...真的想知道是否有另一种方法!? – Cipi 2011-07-06 10:10:24

回答

0

这个要求的起源是什么?你真的需要扔掉数据吗?

0

我以为我在那时做过,但后来只是读取并缓存结果,然后从缓存中取而代之。我正在搜索发送命令时出现的不同结果序列(字符串)。发送的下一个命令不能认为接收缓冲区中不再有字符,因为协议“standard”指定响应可能以CR或LF或CRLF或LFCR结束,或者什么也不是。这个协议由不同的组织以不同的方式实现,因为它的定义非常松散。