網絡編程問題

數據發送

假設應用程序要發送40KB數據,但是OS的TCP發送緩衝區只有25KB剩餘空間,那麼剩下的15KB數據怎麼辦?

如果等待OS緩衝區可用,會阻塞當前線程,因爲不知道對方什麼時候收到並讀取數據,因此網絡庫應該把這個15KB數據緩存起來,放到這個TCP鏈接的應用層發送緩衝區中,等socket變得可寫的時候立刻發送數據,這樣“發送”操作不會阻塞。如果應用程序隨後又發送50KB數據,而此時發送緩衝區中尚有未發送的數據(若干KB),那麼網絡庫應該把這50KB的數據追加到發送緩衝區的末尾,而不能立刻嘗試write(),因爲這樣可能打亂數據的順序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章