Moba项目开发(一)打造网络通信系统-任务3:03.定制通信报文的格式

Moba项目开发(一)打造网络通信系统-任务3:03.定制通信报文的格式_第1张图片

文章目录

    • 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)也就是将收到的消息转化为报文实体

Moba项目开发(一)打造网络通信系统-任务3:03.定制通信报文的格式_第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[]
    }
}

你可能感兴趣的:(接口,linux,c#,unity3d)