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

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

coldplay.xixi
coldplay.xixi原創
2020-06-28 13:20:263333瀏覽

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

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

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

#相關學習推薦: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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多