Ограничение GZipStream 4G - общее или текущее?

Попросите GzipStream покормить SSLStream.

Впервые сегодня заметил: «Поток gzip не может содержать более 4 ГБ данных».

at System.IO.Compression.FastEncoder.GetCompressedOutput(Byte[] outputBuffer)
at System.IO.Compression.DeflateStream.InternalWrite(Byte[] array, Int32 offset, Int32 count, Boolean isAsync)
at System.IO.Compression.DeflateStream.Write(Byte[] array, Int32 offset, Int32 count)
at System.IO.Compression.GZipStream.Write(Byte[] array, Int32 offset, Int32 count)
at ...

Устройство записи в сеть вводит данные быстрее, чем устройство чтения. Поэтому причина ошибки мне не ясна.

Является ли это ограничением на общее количество байтов, записываемых через поток, или это проблема с отставанием при передаче данных из GZipStram в SSLStream?

Reader может разархивировать и использовать данные до окончания потока, поэтому я никогда не думал, что может быть такое ограничение на общее количество записываемых байтов.

Кажется, нет способа проверить длину.

Может ли кто-нибудь поделиться примерами того, как они справились с этим?

Структура кода:

TcpClient network = = new TcpClient();
network.Connect(m_config.Address.Host, m_config.Address.Port);
SslStream sslStream = new SslStream(network.GetStream(), true .. ssl bits
Stream outStream = new GZipStream(sslStream, CompressionMode.Compress, true);

try {
    String nextMessage;
    while (messages.Dequeue(out nextMessage))
    {
        byte[] buffer = Encoding.UTF8.GetBytes(nextMessage + "\n");

        outStream.Write(buffer, 0, buffer.Length);
    }
} catch()

person Greg Domjan    schedule 28.07.2011    source источник


Ответы (1)


Классы GZipStream и DeflateStream в .NET Framework 2.0/3.0/3.5 не поддерживают чтение/запись более 4 ГБ данных.

Это ограничение было снято в .NET Framework 4.0.

person dtb    schedule 28.07.2011
comment
Спасибо. Закрыв GZipStream и создав новый, у меня возникли проблемы, недавно диагностированные как проблема с другим концом соединения, не обрабатывающим конец потока, а также начинающим заново. - person Greg Domjan; 09.08.2011