网络协议应用开发辅助工具
TCP Protocol Application Code Helper
研究原因
编写网络通讯协议应用程序时经常需要对协议包做定义描述,并用目标编程语言对数据包编写编码、解码函数的枯燥没技术含量的重复劳动,希望做一个工具简化这部分重复劳动的工作,目前类似的有google开源的protobuf。
项目目标
定义一个数据包描述语言,对符合有包头包体特征的网络通讯协议的数据包做定义描述,并生成对应目标编程语言的数据包编码解码函数的实现代码等。
它要:
- 有数据包描述语言,可以自己定义协议中所使用到的数据类型
- 可以自己指定原子数据类型的读取函数,控制数据包的编解码方式,比如加解密
- 可以生成多种目标语言的数据包编解码代码(C++、Pascal、Java、C#…)
- 可以生成基于某个网络通讯框架的读取数据包的通讯代码,简化做数据包读取分发处理的时间
计划实现功能
第一阶段:完成数据包描述语言的定义实现
提取通讯数据包程序中数据包的特征,加以抽象化定义出一个描述语言,可以描述有包头,包体这种特征的网络协议通讯包
- 完成数据包描述语言的定义
- 完成数据包描述的解析
第二阶段:根据描述语言的解析结果做数据包类代码的自动生成
提供C++,Pascal等语言的数据包类代码生成,生成的类代码包含以下部分
- 数据包包含的字段定义
- 数据包编码函数的自动生成
- 数据包解码函数的自动生成
- 方便数据包调试输出的文本描述代码自动生成
抽象生成代码的基类,尽量方便使用者实现自己的基类,对应到自己习惯的代码方式中去。
第三阶段:生成基于某些后端网络协议框架的通讯应用程序框架代码
进一步简化TCP网络应用程序开发的流程,节约开发时间,自动生成针对某些网络框架的应用代码基础,比如针对C++的Poco网络框架,Pascal的Indy网络框架等。
- 包含TCP数据接收,对粘连包拼接,并解析还原到具体的数据包
- 对收到解析好的数据包做分发,分发到具体数据包的处理函数中去
- 要生成服务端的代码和客户端的代码,无论做哪端应用都有一个应用基础
- 对客户端代码,断线后要能自动重新连接
- 对服务端代码要能对当前在线连接做管理
项目目前状况
- 完成数据包描述语言的定义和解析 协议数据包定义说明
- 根据数据包描述,生成一份可供参考的html格式数据包描述接口文档
- 数据包类的定义和其编解码函数的实现(C++、Pascal)
寻求帮助
协助挑选高质量底层网络通讯框架以及对应框架的网络通讯应用的代码实现模式,使第三阶段生成的TCP应用框架代码高质高效。
补充说明
因本项目只是个人业余兴趣,所以在具体的时间进度上并没有保障。但是我会保证:
- 1.在有空余时间的时候会努力去实现以上列出的目标。
- 2.有新的进展的时候会第一时间在QQ群里面发布的。
- 3.交流QQ群:328452359
Q&A
- 1.已经有强大的google protobuf了,还要这个干嘛。
- 2.我又不是不会写这些生成的代码,干嘛用它。
protobuf有自己的适用面,它完整的封装了数据的编解码操作,服务端和客户端都要使用基于protobuf生成的代码,适合服务端和客户端都使自己写的应用。本服务工具是个开放的描述,适合实现开放的电信、电力等通讯协议,只通过协议包接口描述文档来实现或者服务端或者客户端。
使用本工具可以节约枯燥的敲入数据包类以及包的编解码函数的时间,协议中所用的数据包类型越多,节约的敲代码时间就越多,比如用半个小时描述包结构生成需要费2-3天时间才能敲出的那部分代码,您愿不愿意呢?。
Popularity: 1% [?]