閱讀MSDN頁面,很明顯,如果套接字傳輸層中沒有內部緩衝區,發送將會阻塞。這實際上是一件好事,因爲我寧願沒有NoBufferSpaceAvailable錯誤。我的理解是傳輸緩衝區空間很大,但如果發送節流閥來防止這些錯誤,我很高興。套接字發送與sendasync。什麼時候發送實際阻止?
但是,不清楚還有什麼會導致發送阻止。我的猜測是,它不會阻塞等待發送的確認,並且發送將只將數據排隊到傳輸緩衝區並返回。
什麼是一個非常糟糕的事情是,如果一個發送確實阻塞,直到一個特定的套接字實際上完全阻塞,直到傳輸完成。如果是這種情況,那麼千分之一的緩慢連接可能會減慢整個發送過程。在這種情況下,SendAsync真的是強制性的。
任何人都有關於此的更多細節?
如果您等待異步套接字返回某些內容(即:結果),它也會阻塞。 – DarthVader