tcp長連接分包有4種方法,分別是:1、訊息長度固定的方法;2、使用特殊的字串作為訊息邊界的方法;3、在每個訊息的頭部加一個長度欄位的方法;4、利用訊息本身的格式來分包的方法。
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中文網其他相關文章!