tcp流式傳輸和udp數據報傳輸

 全部的書上都說, tcp是流式傳輸, 這是什麼意思? 假設A給B經過TCP發了200字節, 而後又發了300字節, 此時B調用recv(設置預期接受1000個字節), 那麼請問B實際接受到多少字節?  根據咱們以前講得tcp粘包特性,可知, B端調用一次recv, 接受到的是500字節。服務器

         所謂流式傳輸, 說白了, 就是管道中的水, 第一次給你發了200斤的水, 第二次給你發了300斤的水, 而後你在對端取的時候, 這200斤和300斤的水, 已經粘在一塊兒了, 沒法直接分割, 沒有界限了。tcp

         

         全部的書上都說, udp是數據報傳輸, 我看了暈暈乎, 什麼意思?  假設A給B經過udp發了200字節, 而後又發了300字節, 此時B調用recvfrom(設置預期接受1000個字節), 那麼請問B實際接受到多少字節?   寫了個程序測了一下, 發現B調用recvfrom接收到的是200本身, 另外的300字節必須再次調用recvfrom來接收。測試

         所謂的數據報傳輸, 說白了, 就有消息和消息之間有自然的分割, 對端接收的時候, 不會出現粘包。 發10次, 就須要10次來接收。博客

 

         我寫tcp程序測了一下, 果真如此。 又寫udp程序測試一下, 果真如此。  個人博客中, 有不少tcp/udp程序, 有興趣的朋友, 能夠玩玩這些程序, 實際驗證一下, 加深理解。udp

         在實際工做中, 我發現udp沒有你想像的那麼不靠譜, 也沒有書上亂講的那樣不靠譜, 並且, 不少實際存在的大系統, IM服務器, 部分場景用的就是udp.程序

相關文章
相關標籤/搜索