Se si devono inviare array di byte da un client ad un server e viceversa, attraverso una connessione TCP, comprimendo i dati prima dell'invio si può ridurre il traffico di rete. A questo scopo, è possibile utilizzare una delle classi che fa parte della libreria SharpZipLib:
public byte[] Compress(byte[] buffer)
{
    using (MemoryStream ms = new MemoryStream())
    {
        int size = buffer.Length;
        using (BinaryWriter bw = new BinaryWriter(ms))
        {
            //Scrive la lunghezza originale dell'array.
            bw.Write(size);
            using (BZip2OutputStream zip = new BZip2OutputStream(ms))
                zip.Write(buffer, 0, size);
        }
        return ms.ToArray();
    }
}
public byte[] Decompress(byte[] buffer)
{
    using (MemoryStream ms = new MemoryStream(buffer))
    {
        using (BinaryReader br = new BinaryReader(ms))
        {
            //Legge la lunghezza dell'array di byte decompresso.
            int size = br.ReadInt32();
            using (BZip2InputStream unzip = new BZip2InputStream(ms))
            {
                byte[] result = new byte[size];
                unzip.Read(result, 0, size);
                return result;
            }
        }  
    }
}
 
Tutto il codice ruota intorno agli oggetti BZip2OutputStream e BZip2InputStream, utilizzati rispettivamente per comprimere e decomprimere gli array. Questo esempio, inoltre, funziona anche se il client oppure il server sono realizzati con il .NET Compact Framework, che è pienamente supportato dalla libreria SharpZipLib.