我曾在非阻塞式TCP中工作,因爲在非阻塞情況下,讀取和寫入都會失敗。如果沒有數據可用,TCP非阻塞讀取可能會失敗,如果對端TCP緩衝區已滿(我希望TCP緩衝區大小爲64K),TCP寫入可能會失敗。UDP非阻塞式寫入失敗
類似地,如果沒有可用的數據,UDP讀取(recvfrom
)可能會失敗。但是,UDP寫入失敗的情況是什麼(sendto
)。我認爲在UDP寫入時不會有任何非阻塞錯誤。因爲TCP寫入發送數據並等待來自另一端的ACK。但是,UDP寫入並不是這樣,它只會發送出去,並且不會等待來自對端的任何ACK。如果不發送給其他方意味着其丟包。
我對UDP非阻塞寫入的理解是否正確?請解釋 ?
可能有很多原因。你是否在寫入失敗時檢查了errno的價值? –