在Unity3d中使用GZip来压缩网络传输数据
2016-05-11 14:10
791 查看
项目中网络通讯需要下载配置数据,有的数据块非常大,比较耗时,所以想到先压缩数据来传输!
因为Unity中的.net支持是有限制的,所以C#自带的GZip的压缩方法不能够使用。
可以到下面网址去下载一个专门的dll来处理数据的GZip压缩:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
在DownLoad目录下,我们直接下载dll文件。
将下载的dll文件引入到工程中。
引入头部:
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.GZip;
以下代码实现了压缩和解压的方法:
MemoryStream ms = new MemoryStream();
GZipOutputStream gzip = new GZipOutputStream(ms);
byte[] binary = Encoding.UTF8.GetBytes("sddddddddd");
gzip.Write(binary, 0, binary.Length);
gzip.Close();
byte[] press = ms.ToArray();
Debug.Log(Convert.ToBase64String(press) + " " + press.Length);
GZipInputStream gzi = new GZipInputStream(new MemoryStream(press));
MemoryStream re = new MemoryStream();
int count=0;
byte[] data=new byte[4096];
while ((count = gzi.Read(data, 0, data.Length)) != 0)
{
re.Write(data,0,count);
}
byte[] depress = re.ToArray();
Debug.Log(Encoding.UTF8.GetString(depress));
因为Unity中的.net支持是有限制的,所以C#自带的GZip的压缩方法不能够使用。
可以到下面网址去下载一个专门的dll来处理数据的GZip压缩:
http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx
在DownLoad目录下,我们直接下载dll文件。
将下载的dll文件引入到工程中。
引入头部:
using ICSharpCode.SharpZipLib;
using ICSharpCode.SharpZipLib.GZip;
以下代码实现了压缩和解压的方法:
MemoryStream ms = new MemoryStream();
GZipOutputStream gzip = new GZipOutputStream(ms);
byte[] binary = Encoding.UTF8.GetBytes("sddddddddd");
gzip.Write(binary, 0, binary.Length);
gzip.Close();
byte[] press = ms.ToArray();
Debug.Log(Convert.ToBase64String(press) + " " + press.Length);
GZipInputStream gzi = new GZipInputStream(new MemoryStream(press));
MemoryStream re = new MemoryStream();
int count=0;
byte[] data=new byte[4096];
while ((count = gzi.Read(data, 0, data.Length)) != 0)
{
re.Write(data,0,count);
}
byte[] depress = re.ToArray();
Debug.Log(Encoding.UTF8.GetString(depress));
相关文章推荐
- 几个网络命令(ping,telnet,ssh,netstat)
- 以下 ID 的密钥没有可用的公钥: 1397BC53640DB551W: 无法下载 http://dl.google.com/linux/chrome/deb
- 中文搜索引擎技术揭密:网络蜘蛛
- 简单的使用HttpClient访问网络
- TCP三次握手连接和TCP四次挥手及大量TIME_WAIT解决方法:
- 网络流二十四题之五 —— 圆桌问题(TABLE)
- Python网络编程08----Django模版
- HTTP 幂等性
- http://blog.163.com/eugeneheen_chen@126/blog/static/120812157201291994916866/
- 面试专题-----计算机网络常考(七)
- 面试专题-----计算机网络常考(六)
- RxJava RxAndroid Retrofit RxBus Dragger2 OkHttp MVP MVVM DataBinding
- c#对上传的文件对象HttpPostedFile的获取
- Java访问https接口实现(JDK/Httpclient4)
- OkHttp+ Retrofit使用从0开始(二)
- 面试专题-----计算机网络常考(四)
- TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节
- HTTP报文的那些事儿
- 面试专题-----计算机网络常考(三)
- http://www.linuxidc.com/Linux/2014-09/106310.htm