簡體   English   中英

通過TCP發送“數據報”的正確架構方法

[英]Correct architectual way to send “datagrams” via TCP

我需要通過TCP以我的自定義格式傳輸全字節數據包。 但是,如果我正確理解TCP是流協議,那么當我在發送方調用send方法時,沒有保證在調用recv時將在接收方以相同大小接收它(可以與Nagle的算法合並在一起,然后在不適合幀或不適合緩沖區時拆分)。

UDP提供完整的數據報,因此不會出現此類問題。

因此,問題是:什么是最好的和正確的方法來recvsend相同包裝,尺寸相同且沒有膠水的包裝。 我使用python開發。

我想我可以使用HDLC東西,但是我不確定遍歷每個字節是否是最佳選擇。 也許有一些開源的小例子可以解決這種情況,或者在書中有描述?

由於TCP只是一個八位位組流,因此如果沒有膠水,就不可能在數據周圍(即成幀)或在數據內部(末端清晰的結構)都沒有粘合。

通常,可以通過使用分隔符(例如HTTP標頭和正文之間的\\r\\n\\r\\n )來完成此操作,也可以僅使用大小作為前綴。 在后一種情況下,只需讀取大小(固定字節數),然后讀取此字節數即可獲得實際消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM