【轉】TCP協議的無訊息邊界問題

來源:互聯網
上載者:User

標籤:

使用TCP協議編寫應用程式時,需要考慮一個問題:TCP協議是無訊息邊界的,即不能保證來自單個Send方法的資料能被單個Receive方法讀取。

eg:

第一次發送:abcdefg   第二次發送:123456         接收方接收資料時,可能會出現以下情況:

第一次接收:abcdefg123456   也可能出現:第一次接收:abc 第二次接收:efg12 第三次接收:3456

因此要解決TCP發送訊息與接收訊息一致性,編程時必須要解決訊息邊界問題。

解決辦法:1、發送固定長度的訊息。這種方適用於資訊長度固定的場合。

2、將訊息長度與訊息一起發送。這種方法增加了資料傳送資訊量,也增加了編程工作量。

eg:每次發送的字串資訊前面用2個位元組表明本次資訊的長度,接收方先從這兩個位元組得到資訊長度。然後根據長度值迴圈接收發送方發送的字串

3、使用特殊標記分隔訊息。這種方法適合資訊本身不包含特殊標記的場合。如每發送一行資訊,就可以用斷行符號換行作為分隔字元。

【轉】TCP協議的無訊息邊界問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.