gpt4 book ai didi

c# - 如何在多个数据 block 上使用 DeflateStream?

转载 作者:太空宇宙 更新时间:2023-11-03 17:01:53 24 4
gpt4 key购买 nike

我使用 DeflateStream 实现了 Websocket 压缩,如下所示:

    public byte[] Compress(Stream input)
{
using (var compressStream = new MemoryStream())
using (var compressor = new DeflateStream(compressStream, CompressionMode.Compress))
{
input.CopyTo(compressor);
compressor.Close();

return compressStream.ToArray();
}
}

这适用于第一条消息,但我需要保持相同的压缩上下文(LZ77 滑动窗口)并将其重新用于第二条消息,而不是每次都从新词典开始。

我目前的解决方法是设置 Websockets client_no_context_takeoverserver_no_context_takeover 选项,让对方知道我们没有回收 deflate 状态。

那么我怎样才能更改上面的代码,以便它为下一次调用保留放气“状态”?

最佳答案

您的代码已实现“使用”,它会在方法返回时处理所有对象。因此,您无法在不同调用之间保持“状态”。

尝试在方法之外维护对 compressorcompressStream 的引用。

关于c# - 如何在多个数据 block 上使用 DeflateStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25597679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com