Protobuf-net
来源:互联网 发布:如何倒时差 知乎 编辑:程序博客网 时间:2024/05/22 05:03
Protobuf 是google发起的一种二进制格式,目前广泛应用在各种开发语言中。详情请看:https://code.google.com/p/protobuf/点击打开链接,关于C#的Protobuf实现,目前公认比较好的就是Protobuf-net。
因为GOOGLE自带支持的语言不包括C#,所以当使用了开元项目Protobuf-net解析google protobuf 格式的通信数据时,需要使用第三方开源库Protobuf-net。 下载地址:点击打开链接 https://github.com/mgravell/protobuf-net
1. 下载后可能会有很多文件,只需要复制protobuf-net到工程中即可。
2.下载后建立一个文件smcs.rsp,内容是-unsafe,前后都不能有空格,放到Assets目录下即可。
3.把工程设置为.Net 2.0 subset,因为.Net 2.0是无法在ios上用这个方法的
4.重启unity。
也可直接导入unitypackage,下载地址:点击打开链接。(上面的1,2,3,4都不需要了)。
下面简单介绍下序列化过程:
//生成数据MainPacket tempPacket = new MainPacket(){ header = HEADER,timestamp = timestamp,cmdCode = cmdCode,contentLength = contentLength,content = contentStr,tail = TAIL};byte[] buffer = null;using ( MemoryStream ms = new MemoryStream ( ) ){//将数据序列化Serializer.Serialize ( ms , tempPacket );ms.Position = 0;int length = (int)ms.Length;buffer = new byte[length];ms.Read(buffer, 0 ,length);//发送请求try{connectPanle.SetActive(true);socket.Send(buffer);}catch{connectPanle.SetActive(false);Debug.Log("socket error");}}
反序列化过程:
//读取消息长度readCount = socket.EndReceive(ar);//调用这个函数来结束本次接收并返回接收到的数据长度。 Debug.Log("读取消息长度" + readCount);byte[] bytes = new byte[readCount];//创建长度对等的bytearray用于接收Buffer.BlockCopy(readM, 0, bytes, 0, readCount);//拷贝读取的消息到 消息接收数组//反序列化1MainPacket s = new MainPacket(); MemoryStream ms = new MemoryStream(); ms.Write(bytes,0,readCount); s = ProtoBuf.Serializer.Deserialize<MainPacket>(ms); Debug.Log("错误代码:"+s.cmdCode); // 对包头和包尾进行解析if(s.header != HEADER && s.tail != TAIL){Debug.Log("非法包");return;}else{Debug.Log("执行成功");messages.Add(s);}//反序列化2//MainPacket newData = null;//using ( MemoryStream ms = new MemoryStream ( bytes ) )//{//newData = ProtoBuf.Serializer.Deserialize<MainPacket>(ms);//}//Debug.Log ( "newData.cmdCode=" + newData.cmdCode );
0 1
- ProtoBuf-net
- protobuf-net
- Protobuf-net
- ProtoBuf-net
- protobuf-net
- protobuf-net 简介
- protobuf-net学习笔记
- protobuf-net简单示例
- Unity3D 中 protobuf-net
- Unity 使用 Protobuf-net
- Protobuf-net学习笔记
- protobuf-net 的应用
- C# Protobuf-Net 序列化
- Unity中使用Protobuf-net
- Protobuf-Net 下载安装使用
- Protobuf-net ProtoGen的使用
- Unity3d protobuf-net的使用
- unity中简单实用protobuf(Protobuf-net)
- 计算机组成原理2
- 数据挖掘回顾七:回归算法之 线性回归
- 新浪微博(第五天)
- MySQL 数据库开发的 36 条军规
- 嵌入式Linux启动过程分析3-bootloader
- Protobuf-net
- 嵌入式Linux启动过程分析4-u-boot-1step-start.S
- 音乐app的分析(例:QQ音乐)
- 信息图:A轮、B轮、天使轮,VC、PE、GP、LP
- 嵌入式Linux启动过程分析5-u-boot-1step-word
- Android 自定义Spinner字体、颜色、大小
- 疯狂的进制转换II
- C# 线程创建实例
- 《C++标准程序库》读书笔记(一)