粘包和半包


  在網絡傳輸過程中粘包和半包中經常出現的現象。

  在TCP傳輸中,客戶端發送消息時,實際上是將數據寫入TCP的緩存,此時數據的大小和緩存的大小就會造成粘包和半包的原因。

  例如:

  客戶端給服務端發送了兩條消息ABCDEF,服務端這邊的接收會有多少種情況呢?有可能是一次性收到了所有的消息ABCDEF,有可能是收到了三條消息ABCDEF

上面所說的一次性收到了所有的消息ABCDEF,類似於粘包,收到三條消息的類似於半包

 

  由此可見當數據超過TCP緩存容量時,這個數據會被拆分成多個包,通過socket多次發送到服務端,服務端每次從緩存中取數據 就會造成半包的問題。

  當數據小於TCP容量時,TCP緩存中可以存放多個包,那個客戶端和服務端一次通信就可能傳遞多個包,這時候服務端就可能一次讀取多個包,產生粘包的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM