2010-09-23 82 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結束,或者什麼也不是。這個協議由不同的組織以不同的方式實現,因爲它的定義非常鬆散。