您的位置:首页 > 移动开发 > Unity3D

unity开发中使用 通讯协议

2017-10-16 09:01 190 查看
socket进行通讯的时候,如果我们要发送一个数据,要是直接发送一个json数据,包体会很大,因为json格式有很多不会用到的字节
所以采用将数据转换成byte数据,进行传输,我们会发现真正传输的数据大小比传输json要小很多。
但是如果这样接受数据,怎么在服务器接收到以后确定是什么地方的消息呢?(如:聊天,战斗,购买物品等)
我们就要在服务器和客户端之间建立一套通讯协议,这套协议是我们通讯的关键。
这是测试的时候的一个例子

//此处的testproto是定义的一个协议,包含了这几个属性
TestProto proto = new TestProto();
        proto.Id = 1;
        proto.Name = "测试";
        proto.Type = 0;
        proto.Price = 99.5d;

  public byte[] ToArray() {
//吧数据转换成byte 进行传输
        using (MMOMemoryStream ms =new MMOMemoryStream())
        {
            ms.WriteInt(Id);
            ms.WriteUTF8String(Name);
            ms.WriteInt(Type);
            ms.WriteDouble(Price);

            return  ms.ToArray();

        }

    }
//把数组还原成数据的方法
    public static TestProto GetProto(byte[] buffer)
    {
        TestProto proto = new TestProto();
        using (MMOMemoryStream ms=new MMOMemoryStream())
        {
            proto.Id = ms.ReadInt();
            proto.Name = ms.ReadUTF8String();
            proto.Type = ms.ReadInt();
            proto.Price=ms.ReadDouble():
        }
        return proto;
    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: