博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tcp长连接分包方法
阅读量:6889 次
发布时间:2019-06-27

本文共 694 字,大约阅读时间需要 2 分钟。

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;        }    }}

 

转载于:https://www.cnblogs.com/wangshaowei/p/9358335.html

你可能感兴趣的文章
获取Spring容器中的Bean
查看>>
ORA-01210: data file header is media corrupt
查看>>
Aerospike开发指南【中文】
查看>>
Python批量修改一个目录文件名
查看>>
rhel6.3 ntp服务器搭建过程
查看>>
Java数组的创建和初始化
查看>>
mysql相关知识点整理
查看>>
文档类型定义
查看>>
PHP POST接收处理 IOS上传NSData图片数据,上传图片到服务器
查看>>
代码块,静态代码块,构造代码块执行顺序
查看>>
账号管理之配置文件篇
查看>>
Windows2008 R2修改3389端口教程
查看>>
SW2014中文版本出现中文语言丢失时可以安装2011的包修复
查看>>
SOAP接口
查看>>
编译安装
查看>>
IP报文头
查看>>
百度统计个人初探
查看>>
我的友情链接
查看>>
phpstorm使用
查看>>
单元测试、集成测试和系统测试的不同之处[转]
查看>>