這屬於Linux內核2.6 TCP套接字。Linux TCP/IP針對套接字流的非阻塞發送...... TCP recv緩衝區會發生什麼情況?
我發送大量的數據,說300 MB,與非阻塞發送給誰一次接收8 MB的另一端。
一個8 MB的接收後,「接收器」停止接收,因爲它想執行其他任務,如錯誤處理。發送者會得到一個EWOULDBLOCK,但由於它是異步通信,發送者會嘗試填充另一端的TCP recv緩衝區。
我的問題是:將有仍然在TCP recv的緩衝數據,即使在「發件人」有一個EWOULDBLOCK和「接收器」停止接收?同一個套接字用於錯誤處理,那麼「接收方」必須在嘗試重用現有套接字之前清除TCP recv緩衝區?
但它只會填滿TCP recv緩衝區,只有部分8 MB會被髮送。那麼你怎麼知道丟棄多少? – user224579 2009-09-08 02:22:07
至少就你解釋你在做什麼而言,你是不會知道的。套接字只是數據流。它們的唯一含義是你在應用程序級別協議,記錄等方面對它們施加的影響。如果這是一個需要考慮的條件,那麼你需要定義一些能夠讓你解決的條件。 – Duck 2009-09-08 02:49:50
我明白了,這是應用程序的責任。謝謝! – user224579 2009-09-08 02:59:31