



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
类似于SLG这类游戏,对游戏的实时交互要求不是很高,所以一般选择的都是通过HTTP协议,进行前后台数据交互。但随着用户对游戏的需求越来越高,MMORPG也逐步出现在webgame之中,诸如昆仑、乐土这类回合制MMORPG-Webgame。由于HTTP是短连接,不能适应这种长连接的网络需求。所以肯定是需要使用socket进行网络连接的。虽然COMET也能达到类似的目的,但是性能上还是难以达到socket的水平,所以在商业化应用上还是比较少考虑的。本文不会涉及到用何种语言实现socket连接来传递数据,主要内容是根据实际的经验,和大家讨论下服务器端和客户端之间传递的数据及数据结构的一些问题。首选说几个名词:1、封包大家在使用互联网的时候,所有的数据都是被打成一个包发出去的,这个包不是压缩包(ziprar),而是有一定数据结构的二进制数据。封包的主要内容是数据信息,含有信息要发送到的目的IP地址、信息发送的源IP地址、以及一些相关的控制信息。当一台路由器收到一个IP数据包时,它将根据数据包中的目的IP地址项查找路由表,根据查找的结果将此IP数据包送往对应端口。下一台IP路由器收到此数据包后继续转发,直至发到目的地。路由器之间可以通过路由协议来进行路由信息的交换,从而更新路由表。在设计游戏的封包中,我们只关心数据信息,而其他的不需要关心。2、字节(Byte)大家对对MB,KB肯定不陌生,也一定知道MB或KB中的B就是Byte。Byte是存储空间的基本计量单位。一般来说一个ASCII码就占用一个字节,比如A或者13、位既然知道了字节,那么字节由什么组成呢,那就是位了。是计算机中最小的数据单位。一个字节由8个二进制位构成,如00001111。ASCII码是都可以转换成二进制的。如下表二进制 十进制 十六进制 字符00110001 49 31 1 00110010 50 32 200110011 51 33 3 00110100 52 34 400110101 53 35 5 00110110 54 36 600110111 55 37 7 00111000 56 38 8 00111001 57 39 91、协议设计一般来说我们都会设计一个协议,这个协议指明了,这个封包的数据的作用是什么。一般我们都会用数字来代表协议。如:登陆登出 1聊天 2移动 3所以我们可以这样设计数据协议-控制器 登陆登出 1-动作 登陆 1动作 登出 2-控制器 聊天 2-动作 私聊 1动作 世界 2动作 队伍 3-控制器 移动 3-动作 移动 1这样就构成了数据结构:控制器,动作,DATA如世界聊天:2,2,DATA; 移动:3,1,DATA这样客户端和服务器端就能根据控制器和动作来调用不同的程序来处理DATA中的数据。而DATA也有自己的结构,这个是根据实际的功能来设计的。比如私聊,就设计成:2,1,from,to,msg如果我们使用socket传输字符串,那么客户端和服务器端收到这样的数据后就可以进行处理了。2、封包设计在协议设计中,我们是使用的字符串组成的协议,而为了降低网络开销,一般使用二进制来传递数据。这样可以大大降低包的长度。节省网络带宽。之前我们在协议设计了控制器和动作,现在我们加一个返回值,返回值代表了控制器和动作的结果,而不是数据本身。那么就构成了这样的数据结构:控制器,动作,返回值,DATA。我们可以把控制器、动作、返回值放到两个字节里面,这就要进行位操作。一个字节有8位,我们可以这样分配位:第一个字节+-4-8+ 控制器 + 动作 +-+-+将一个字节的第1-4位用与控制器,5-8位用于动作第二个字节+-4-8+ 返回值 + 保留 +-+-+将一个字节的第1-4位用与返回值,5-8位保留以作他用如果无返回值,者第二个字节为00000000而DATA中的数据也是使用二进制结构,这就需要根据不用的协议,来写不同的解包程序。也可以写通用的解包程序,那就需要在设计数据结构的时候更要深思熟虑。关于DATA这部分的数据结构的设计,会以后专门进行说明。我们构造出了封包的数据主体,还要标示出这个数据有多长,我们会在长度和数据主体之间加一个分割符,我这里用了0x88或0x86+-16-8-8-4-8-4-n+ 包长 + 0x88 + 控制器 + 动作 + 返回值 + 保留 + DATA +-+-+-+-+-+-+-+这里需要根据实际情况,决定包长使用1个字节还是2个字节,1个字节可以表示255个字节的长度,2个字节可以标示65535的长度在进行socket通信的时候,经常会处理拼包和粘包这些问题。用我们之前设计的数据结构,是无法处理拼包和粘包这些问题的,所以我们还必须把以控制器为单位的包区分开来。比如我们的包构成是:+-16-8-8-4-8-4-n+ 包长 + 0x88 + 控制器 + 动作 + 返回值 + 保留 + DATA +-+-+-+-+-+-+-+我们可以在包前端增加一个字节以进行区分+-8-16-8-8-4-8-4-n+ 0x86 + 包长 + 0x88 + 控制器 + 动作 + 返回值 + 保留 + DATA +-+-+-+-+-+-+-+-+在整个封包中,还可以加入更多的元素,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业种植土地租赁与使用合同书
- 拳击培训设计方案(3篇)
- 六年级童话寓言重名熊猫600字10篇
- 生产计划与进度管理表格模板
- 人力资源信息收集标准化工具及评估
- 沙尘暴对环境的影响(15篇)
- 2025北京顺义区高三一模生物试题及答案
- 高一语文《唐诗三百首》教学策略
- 农村环境整治责任协议书
- 初三语文文言文实词虚词解析试卷及答案
- 新能源并网技术规范-洞察及研究
- 产品生态设计管理办法
- 安全生产责任保险事故预防服务方案
- 学堂在线 积极心理学(上)厚德载物篇 章节测试答案
- 上海市徐汇、松江、金山区2025届高二下化学期末综合测试试题含解析
- 爱回收培训课件
- 气候变化对施工的影响及应对
- 提高四级手术术前多学科讨论完成率PDCA案例
- CJ/T 235-2017立式长轴泵
- 催收作业管理制度
- 2025年云南红河州红产林业发展有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论