目录
基于传输层TCP协议,自定义实现一个应用层协议
一:回顾JsonCpp
C++通过JsonCpp读取Json文件
网络编程字节序转换问题
二:实现自定义应用层
(一)协议分类
(二)协议设计
(三)设计协议结构
(四)实现协议封装函数
(五)实现协议解析函数
(六)实现对应用层封装、解析的测试
三:实现传输层TCP编程
(一)TCP回顾
(二)客户端代码实现
(三)服务器端实现
四:编译测试自定义协议
(一)编译TCP程序
(二)进行测试
(三)全部代码见:GitHub(500行不到)
基于传输层TCP协议,自定义实现一个应用层协议
一:回顾JsonCpp
C++通过JsonCpp读取Json文件
网络编程字节序转换问题
二:实现自定义应用层
(一)协议分类
1.按编码方式
二进制协议:比如网络通信运输层中的tcp协议。
明文的文本协议:比如应用层的http、redis协议。
混合协议(二进制+明文):比如苹果公司早期的APNs推送协议。
2.按协议边界
固定边界协议:能够明确得知一个协议报文的长度,这样的协议易于解析,比如tcp协议。
模糊边界协议:无法明确得知一个协议报文的长度,这样的协议解析较为复杂,通常需要通过某些特定的字节来界定报文是否结束,比如http协议。
(二)协议设计
本协议采用固定边界+混合编码策略。用于传输Json数据(命令)
1.协议头
8字节的定长协议头。支持版本号,基于魔数的快速校验,不同服务的复用。定长协议头使协议易于解析且高效。