Skip to content

Commit 50eb32f

Browse files
committed
[修复]1. 修复数据压缩和解压缩的数据完整性异常
GameFrameX/GameFrameX.Unity#28
1 parent 112e3a2 commit 50eb32f

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

Runtime/Network/Helper/DefaultMessageCompressHandler.cs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,18 @@ public byte[] Handler(byte[] message)
2626
/// <returns></returns>
2727
static byte[] Compress(byte[] bytes)
2828
{
29-
var uncompressed = new MemoryStream(bytes);
30-
var compressed = new MemoryStream();
31-
var deflateStream = new DeflateStream(compressed, CompressionMode.Compress);
32-
uncompressed.CopyTo(deflateStream);
33-
deflateStream.Close();
34-
return compressed.ToArray();
29+
using (var uncompressed = new MemoryStream(bytes))
30+
{
31+
using (var compressed = new MemoryStream())
32+
{
33+
using (var gZipStream = new GZipStream(compressed, CompressionMode.Compress, true))
34+
{
35+
uncompressed.CopyTo(gZipStream);
36+
}
37+
38+
return compressed.ToArray();
39+
}
40+
}
3541
}
3642
}
3743
}

Runtime/Network/Helper/DefaultMessageDecompressHandler.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,20 @@ public byte[] Handler(byte[] message)
2626
/// <returns></returns>
2727
static byte[] Decompress(byte[] bytes)
2828
{
29-
var compressed = new MemoryStream(bytes);
30-
var decompressed = new MemoryStream();
31-
var deflateStream = new DeflateStream(compressed, CompressionMode.Decompress); // 注意: 这里第一个参数同样是填写压缩的数据,但是这次是作为输入的数据
32-
deflateStream.CopyTo(decompressed);
33-
var result = decompressed.ToArray();
34-
return result;
29+
using (var compressed = new MemoryStream(bytes))
30+
{
31+
using (var decompressed = new MemoryStream())
32+
{
33+
// 注意: 这里第一个参数同样是填写压缩的数据,但是这次是作为输入的数据
34+
using (var gZipStream = new GZipStream(compressed, CompressionMode.Decompress))
35+
{
36+
gZipStream.CopyTo(decompressed);
37+
}
38+
39+
var result = decompressed.ToArray();
40+
return result;
41+
}
42+
}
3543
}
3644
}
3745
}

0 commit comments

Comments
 (0)