2012-01-24 4 views
1

Я пишу простой клиент-серверное приложение, и смотреть документацию MSDN, я наткнулся на несколько интересных типов потоков ...Запись сжатых данных в NetworkStream

http://msdn.microsoft.com/en-us/library/system.io.compression.deflatestream.aspx http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

По-видимому, есть такой вещь как сжатый поток! Естественно, это очень привлекательно, учитывая, что мы имеем дело с сетью. Однако, к сожалению, TcpClient.GetStream() возвращает только NetworkStream - не любую форму сжатого потока.

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

На стороне, которую вы порекомендовали мне - Что предлагает самое быстрое сжатие, GZip или Deflate? И в чем разница в сжатии между этими двумя?

ответ

5

Это оберточные потоки.
Вы можете создать GzipStream вокруг любого существующего потока для чтения или записи сжатых данных во внутренний поток.

0

Оформить заказ networkComms.net, библиотека связи с открытым исходным кодом, которая включает в себя возможность использования множества различных типов сжатия при отправке данных. Все, что вам нужно сделать, это изменить свойство NetworkComms.DefaultCompressor. Вы можете выбрать из:

  1. Ни
  2. LZMA (Slow Speed, Best Compression)
  3. GZip (хорошая скорость, хорошее сжатие)
  4. QuickLZ (Best Speed, Basic Compression)

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

Смежные вопросы