协议生成工具设计思路
2023-12-01 01:03:06 6 举报
协议生成工具设计思路
作者其他创作
大纲/内容
那么客户端程序创建一个bytes数组,将PlayerInfo信息转成byte按照规则传进去即可,服务器端收到这个数据之后通过这个规则读取信息new一个PlayerInfo对象,并按照客户端传来的数据惊醒反序列化即可。但是。。。这样做的话每次客户端和服务器端要进行通讯的时候客户端和服务器端都需要手动创建自己的PlayerInfo类,而且属性的顺序也需要一直,其实客户端和服务器端的这个PlayerInfo的功能是一直的,就是序列化和反序列化,作为客户端和服务器端数据交互的一个容器,所以这个代码完全是可以通过工具来生成的,这样可以节省大量客户端和服务器端对接的时间,特别是前后端采用不同的语言的时候。
生成
这里举个例子,<messages name=\"xx\" id=\"xx\"><messages>用这样的格式定义一条前后端交互的通讯消息<class name=\"xx.xx.PlayerInfo\"><attributes><attribute name=\"playername\
协议文件(xml、json)
string数据
其中的协议文件可以随意,xml、json、txt都可以,只要可以定义一套生成前后端代码的规则就行
客户端C#文件
总所周知客户端和服务器端是通过二进制流的形式传输文件的,假设客户端有个PlayerInfo,有string类型的name,int类型的id,客户端创建了这个类对象,那么这个类对象如何传输给服务器端呢?假设客户端和服务器端协商好了,自己定义一套规则来进行二进制数据的序列化和反序列化,在开头的四个字节存储int类型的id,之后4个字节存储string的长度,之后就是string的真正数据
这个规则只是获取到最终的数据,开发中不会这样发数据,真实开发中会加更多的头部数据,比如协议id,消息id等保证通讯收发顺序或者解决丢包、粘包、分包的数据
id
string的长度
服务器端Python文件
0 条评论
下一页