feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) + game logic (GameFix/GameDAL/ServerData) + network layer (NetWorkMessage) + data layer (ObjectModel) + utilities (MrWu/Core/Config/CloudAPI/dll) + adapters (zyxAdapter/base) .NET 8.0 C# solution, 16 projects, 958 source files
This commit is contained in:
114
MrWu/IO/ZipCompressHelp.cs
Normal file
114
MrWu/IO/ZipCompressHelp.cs
Normal file
@ -0,0 +1,114 @@
|
||||
/* ==============================================================================
|
||||
* 功能描述:ZipCompressHelp
|
||||
* 创 建 者:徐高庆
|
||||
* 创建日期:2022/10/18 16:26:09
|
||||
* CLR Version :4.0.30319.42000
|
||||
* ==============================================================================*/
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
|
||||
namespace MrWu.IO
|
||||
{
|
||||
/// <summary>
|
||||
/// ZipCompressHelp
|
||||
/// </summary>
|
||||
public class ZipCompressHelp
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 压缩流
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] CompressByte(byte[] data)
|
||||
{
|
||||
if (data == null || data.Length <= 0) return null;
|
||||
using (MemoryStream im = new MemoryStream(data))
|
||||
{
|
||||
using (MemoryStream om = new MemoryStream())
|
||||
{
|
||||
using (DeflateStream com = new DeflateStream(om, CompressionMode.Compress))
|
||||
{
|
||||
im.CopyTo(com);
|
||||
}
|
||||
return om.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解压流
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] DecompressByte(byte[] data)
|
||||
{
|
||||
if (data == null || data.Length <= 0) return null;
|
||||
using (var im = new MemoryStream(data))
|
||||
{
|
||||
using (var om = new MemoryStream())
|
||||
{
|
||||
using (var dcom = new DeflateStream(im, CompressionMode.Decompress))
|
||||
{
|
||||
dcom.CopyTo(om);
|
||||
}
|
||||
return om.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// GZip压缩方式
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static byte[] GZipByte(byte[] str)
|
||||
{
|
||||
if (str == null) return null;
|
||||
using (var output = new MemoryStream())
|
||||
{
|
||||
using (
|
||||
var compressor = new Ionic.Zlib.GZipStream(output, Ionic.Zlib.CompressionMode.Compress,
|
||||
Ionic.Zlib.CompressionLevel.Default))
|
||||
{
|
||||
compressor.Write(str, 0, str.Length);
|
||||
}
|
||||
return output.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解压
|
||||
/// </summary>
|
||||
public static byte[] GDexZipByte(byte[] str)
|
||||
{
|
||||
if (str == null) return null;
|
||||
|
||||
using (var xx = new MemoryStream(str))
|
||||
{
|
||||
using (var de = new Ionic.Zlib.GZipStream(xx, Ionic.Zlib.CompressionMode.Decompress,
|
||||
Ionic.Zlib.CompressionLevel.Default))
|
||||
{
|
||||
using (var output = new MemoryStream())
|
||||
{
|
||||
CopyTo(de, output);
|
||||
return output.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void CopyTo(Stream im, Stream om)
|
||||
{
|
||||
if (im == null || om == null) return;
|
||||
byte[] buffer = new byte[1024 * 1024];
|
||||
int r;
|
||||
while ((r = im.Read(buffer, 0, buffer.Length)) > 0)
|
||||
{
|
||||
om.Write(buffer, 0, r);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user