Moba项目开发(一)打造网络通信系统-任务3:03.定制通信报文的格式
文章目录
- 1)报文结构
- (1)包体大小-》用于确认报文的完整性
- (2)会话ID-》用于识别客户端的唯一性
- (3)序号-》用于保证报文的顺序
- (4)模块ID-》把报文传递给对应模块/程序
- (5)发送时间/时间戳-》用于判断是否超时
- (6)协议类型-》区分协议的细节(比如101要登录,102要注册)
- (7)协议ID-》用于区分业务
- (8)协议内容-》记录业务数据
- 2)提供组装请求报文实体的接口
- 3)提供组装ACK报文实体的接口
- 4)提供解码的接口
- (1)通过该接口获取到包体大小、会话ID、序号、。。。
- (2)也就是将收到的消息转化为报文实体
1)报文结构
(1)包体大小-》用于确认报文的完整性
(2)会话ID-》用于识别客户端的唯一性
(3)序号-》用于保证报文的顺序
(4)模块ID-》把报文传递给对应模块/程序
(5)发送时间/时间戳-》用于判断是否超时
(6)协议类型-》区分协议的细节(比如101要登录,102要注册)
(7)协议ID-》用于区分业务
(8)协议内容-》记录业务数据
2)提供组装请求报文实体的接口
3)提供组装ACK报文实体的接口
4)提供解码的接口
(1)通过该接口获取到包体大小、会话ID、序号、。。。
(2)也就是将收到的消息转化为报文实体
using System.Net; //用了public IPEndPoint endPoint;要加
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//先建立命名空间
namespace Game.Net
{public class BufferEntity{public int recurCount = 0; //记录重发次数,工程内部用到(记录网络拥塞),并非业务数据public IPEndPoint endPoint; //发送的目标终端,里面记录了IP和端口public int protoSize; //协议大小,用于确认报文的完整性public int session; //会话ID,用于识别客户端的唯一性public int sn; //序号,用于保证报文的顺序public int moduleID; //模块ID,把报文传递给对应模块/程序public long time; //发送时间,用于判断是否超时public int messageType; //协议类型,区分协议的细节(比如101要登录,102要注册)public int messageID; //协议ID,用于区分业务public byte[] proto; //业务报文,记录业务数据//需要一个字段全部组装成一个byte数组,作为发送的字段public byte[] buffer; //最终要发送的数据 或者是 收到的数据//创建一个请求报文的接口,用构造函数//第一个参数是我们要发送的终端,第二个参数是会话ID,第三个参数是序号,以此类推public BufferEntity(IPEndPoint endPoint,int session,int sn,int moduleID,int messageType,int messageID,byte[] proto){protoSize = proto.Length;this.endPoint = endPoint;this.session = session;this.sn = sn;this.moduleID = moduleID;this.messageType = messageType;this.proto = proto;}//编码的接口,把这些成员组装成要发送的数据,也就是 byte[]}
}
Moba项目开发(一)打造网络通信系统-任务3:03.定制通信报文的格式相关推荐
- iOS项目开发实战——iOS网络编程获取网页Html源代码
如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现 ...
- Typescript助力项目开发:JS切换TS、TS类型定制与思考
TS已经成为可以帮助项目顺利开发的存在了.在上半年笔者就被要求采用TS开发新的项目,并在一些老项目中用TS去改造(因为沟通原因我以为某个远程组件只有TS版本).在其中也有了一些思考. 首先是目录结构. ...
- 软件项目开发计划书【申明:来源于网络】
软件项目开发计划书[申明:来源于网络] 地址:http://jingyan.baidu.com/article/9f63fb91ab4da1c8400f0ea1.html 转载于:https://ww ...
- 【毕业设计】JAVA网络通信系统的研究与开发(论文+源代码+开题报告)
文章目录 目录 一.系统设计 二.系统实现 源文件 目录 一.系统设计 网络通信在当今信息社会中起着不可或缺的作用 ,人们可以利用网络通信技术进行即时的信息交流.例如,人们可以通过Internet搜索 ...
- 仿微信的网络聊天室项目开发【完整源码讲解】
目录 总体开发思路 服务器端 服务器界面设计 建立TCP服务器端通信 建立服务器消息发送输出流 建立服务器消息接收输入流 建立服务器实时消息通信线程 设置服务器通信自由断开 客户端 客户端界面设计 建 ...
- Python编程:从入门到实践+爬虫开发与项目实战+网络编程基础+项目开发实战
给还在苦苦自学Python的小伙伴们分享一波学习教程~有了它们,至少能节省50%的时间,少走一半的弯路. 书不在多,而在于精~ <Python编程:从入门到实践>豆瓣评分9.2 本书是针对 ...
- Python大型网络爬虫项目开发实战
1 讲师简介 2 课程简介及特色 实战精通Scrapy爬虫项目编写 "Scrapy是Python的一个非常流行的爬虫框架,使用Scrapy框架可以很方面做出大型爬虫项目,但Scr ...
- Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ、负载均衡、F5、Nginx、容器)的简介、使用方法之详细攻略
Computer:互联网开放平台项目知识补充之开发-运维-网络-网关等术语(DMZ.负载均衡.F5.Nginx.容器)的简介.使用方法之详细攻略 目录 DMZ(隔离区)的简介及其使用方法 1.DMZ区 ...
- 外包项目开发课程整理三:Selfsourcing(自主开发)及 Prototyping(打造原型)
外包项目开发课程整理三:Selfsourcing(自主开发)及 Prototyping(打造原型) 课程整体内容: Insourcing and the SDLC(内包及系统开发生命周期):定义传统 ...
最新文章
- ionic开发:第一步
- Android Jetpack组件之Navigation使用-源码
- oracle手动启动服务
- 2021年北京高校数学建模校际联赛题目 出版社图书印制策略
- 电商企业怎样用好大数据
- mysql 5.7.21-linux_MySQL 5.7.21 Linux平台安装 Part 2
- rust这么拆除钢墙_rust腐蚀如何拆墙
- python中get和getall_Scrapy框架get() 、getall() 、extract() 、extract_first()的区别
- python企业微信群聊_python调用企业微信接口发送群聊消息代码参考
- 现在动画制作用什么软件?
- android ipv6 谷歌,Ipv6使用google服务的DNS
- 架构设计:系统存储(21)——图片服务器:详细设计(1)
- 百度地图如何去除 百度地图的logo
- NAPI(New API)的一些浅见
- http状态返回代码 1xx(临时响应)
- golang元转分、分转元
- 电子元器件的分类有哪些?
- 编写测试用例基本要求、非功能性测试和状态迁移法介绍
- 求职者该如何理清自身的求职策略?
- MATLAB 符号表达式与运算全面详细讲解