我在Linux下編寫一個接口,它從TCP套接字獲取數據。用戶提供一個緩衝區,其中存儲接收的數據。如果提供的Buffer很小,我只想返回一個錯誤。首先問題是確定緩衝區是否很小。 recv()函數只是返回實際寫入緩衝區的字節數。如果我使用recv()手冊頁中聲明的MSG_TRUNC標誌,它仍會返回相同的結果。第二個問題是丟棄仍然在套接字中排隊的數據。所以,如果我確定我提供的Buffer很小,我只想擦除套接字上留下的所有內容。除了關閉並重新打開套接字或只是接收到沒有剩下任何東西之外,是否還有其他方法可以這樣做?最好的問候<確定是否有數據留在套接字上並丟棄它
一個建議是隻是recv,直到沒有剩餘(我得到返回0) - 但不會因爲每次我打電話給這個預設超時(在這種情況下,它是5秒? recv它等待數據還是超時?
免責聲明/解釋位是不必要的。只是問你的問題。 – vezult
請你能提供原帖的鏈接嗎? – jweyrich