首頁 > 常見問題 > tcp長連接分包有幾種方法?

tcp長連接分包有幾種方法?

coldplay.xixi
發布: 2020-06-28 13:20:26
原創
3349 人瀏覽過

tcp長連接分包有4種方法,分別是:1、訊息長度固定的方法;2、使用特殊的字串作為訊息邊界的方法;3、在每個訊息的頭部加一個長度欄位的方法;4、利用訊息本身的格式來分包的方法。

tcp長連接分包有幾種方法?

tcp長連接分包的四個方法:
1.訊息長度固定
2.使用特殊的字串作為訊息邊界。例如http協定的headers以「\r\n」為欄位的分隔符號
3.在每個訊息的頭部加一個長度欄位。這是最常見的
4.利用訊息本身的格式來分包。例如xml中的<root></root>的配對等

#相關學習推薦:PHP 程式設計從入門到精通

說一下在頭部加訊息長度欄位分包的方法
假如每個訊息有一個4位元組的頭部,存放字串的長度。例如訊息“hello”,位元組流為0x00,0x00,0x00,0x05,'h',' e','l','l','o'
寫一段偽代碼展示分包:

void OnMessage()
{    while(接收缓冲buf可读字节>=头部长度4)
    {
        len = 包的长度        if(len>65536 or len<0)
        {
            关闭连接
        }        else if(buf>=len+4)
        {
            从buf中提取出4字节;
            message=将buf后的len长度内存赋给message
            messagecallback(message)调用用户代码处理message
            从buf中移除len长度
        }        else
        {
            不够一个包的长度,等待下次消息到来,break;
        }
    }
}
登入後複製

以上是tcp長連接分包有幾種方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板