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;
}
所以采用将数据转换成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;
}
相关文章推荐
- unity中使用protobuffer作为网络通讯封包协议的实现和流程
- 使用C#开发Socket通讯
- Socket开发之通讯协议及处理
- Socket开发之通讯协议及处理
- 使用P/Invoke来开发用于与串行设备通讯的.NET基类
- 转:使用P/Invoke来开发用于与串行设备通讯的.NET基类(翻译)
- 使用Embedded VC++开发通讯终端及代码分析
- 使用Embedded VC++开发通讯终端及代码分析
- Socket开发之通讯协议及处理
- IOS开发协议使用之──非正式协议和正式协议
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- 使用Flash, HTML5, Unity进行web游戏开发的现状对比
- Socket开发之通讯协议及处理
- Socket开发之通讯协议及处理
- Socket开发之通讯协议及处理
- 使用P/Invoke来开发用于与串行设备通讯的.NET基类
- 使用C#开发Socket通讯的方法
- 第二次使用C++BUILDER开发SOCKET通讯程序,工作完成
- 使用P/Invoke来开发用于与串行设备通讯的.NET基类