Moba项目开发(一)打造网络通信系统-任务13:13.编写buffer工厂创建报文以及发送报文

文章目录

    • 1.编写buffer工厂创建
    • 2.编写proto测试用类

1.编写buffer工厂创建

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Google.protobuf;

namespace Game.Net
{
     
    public class BufferFactory
    {
     
        enum MessageType
        {
     
            ACK = 0;     //确认报文
            Login = 1;   //业务逻辑的报文
        }

        //创建并发送报文
        //构造函数,创建BufferFactory的
        //IMessage 导入谷歌的命名空间using Google.protobuf;
        public static BufferEntity CreateAndSendPackage(int messageID,IMessage message)
        {
     
            //第一个0表示序号,发送的时候改变序号
            //第二个0表示模块定位号,现在暂时定为0
            BufferEntity buffer = new BufferEntity(
                USocket.local.endPoint,
                USocket.local.sessionID,
                0,
                0,
                MessageType.Login.GetHashCode(),
                messageID,
                ProtobufHelper.ToBytes(message)     //将message对象序列化一下
                );
            USocket.local.Send(buffer);
            return buffer;
        }
    }
}

2.编写proto测试用类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using ProtoMsg;    //所有protobuf转化为cs的文件都在这个命名空间下面

public class ProtoTest : MonoBehaviour
{
     
    //Start is called befored the first frame update
    void Start()
    {
     
        /*UserInfo userInfo = new UserInfo();
        //模拟一下
        userInfo.Account = "11111";//通过用户界面框动态的获取
        userInfo.Password = "kkkkk";

        //注册的协议
        //这些类都是继承IMessage这个接口
        UserRegisterC2S userRegisterC2S = new UserRegisterC2S();
        userRegisterC2S.UserInfo = userInfo;
        //客户端和服务器定义的1001,用于识别具体左什么业务的
        //通过下面的这个接口序列化成字节数组,构造BufferEntity成可以发送的数据
        BufferEntity bufferEntity = BufferFactory.CreateAndSendPackage(1001,userInfo);


        //反序列化 举例
        //收到 byte [ ]  字节数组.将字节数组转化成实体对象
        //反序列化成UserRegisterC2S这个类
        UserRegisterC2S userRegisterC2S1 = ProtobufHelper.FromBytes(bufferEntity.proto);*/




    }

    void Update()
    {
     

    }
}


你可能感兴趣的:(protobuf,c#)