tcp長連接分包方法


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

說一下在頭部加消息長度字段分包的方法
假如每條消息有一個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;
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM