當前位置:編程學習大全網 - 遊戲軟體 - CSocket類的Send()函數問題:連續發送多次為什麽只收到壹次?

CSocket類的Send()函數問題:連續發送多次為什麽只收到壹次?

樓主可能沒搞清楚,當每個socket建立後會有壹個發送緩沖區和壹個接收緩沖區,windows系統默認是8KB,send調用成功以後數據並沒有立即發出去,而只是把發送的數據復制到發送緩沖區,由操作系統底層實現發送功能,發送到接受端的接收緩沖區。為了減輕網絡負擔,壹般的TCP鏈接用了nagle算法,並不是發送緩沖區有數據就會發送的。

對於接收端來說,receive(char *buf,num)只是從接收緩沖區裏面取數據,返回的值就是取得的數據大小。妳多次send,如果數據量不大,而num的值超過了發送的總值,那麽就會壹次取完接受緩沖區的數據。

不知道這樣解釋樓主清楚了沒有。

  • 上一篇:北洋海軍興亡史6 康濟號鏡頭是什麽電影
  • 下一篇:報紙的版面要怎麽排版_報紙排版常識
  • copyright 2024編程學習大全網