[英]Until when does NetworkStream.Write block?
我能想到這些可能的答案:
直到數據被寫入發送方的發送緩沖區。
因此,如果緩沖區已滿,它將阻塞。
如果由於網絡問題或接收器端的接收緩沖區已滿,發送緩沖區可能尚未發送數據,則發送緩沖區可能已滿。
您可以進行一個實驗:制作發送方和接收方,將發送方的套接字發送緩沖區設置為較小的值,將接收方的接收緩沖區設置為較小的值。
開始發送,在接收方接受連接,但不接收。 當發送的字節數約為 SenderSendBuffer + ReceiverReceiveBuffer 時,套接字將被阻塞。
NetworkStream
不緩沖數據。 最終,對NetworkStream.Write
的調用將轉換為套接字發送function 調用。 此 function 的 MSDN 文章說:
發送 function 成功完成並不表示數據已成功交付並接收到接收方。 這個function只表示數據發送成功。
這回答了你的問題了嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.