Guest User

NetworkStream DeflateStream Compression

a guest
Apr 8th, 2016
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.91 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net.Sockets;
  6. using System.Net;
  7. using System.IO;
  8. using System.Threading.Tasks;
  9. using System.IO.Compression;
  10.  
  11. namespace ConsoleApplication6
  12. {
  13.     class Program
  14.     {
  15.         const int port = 11111;
  16.         static byte[] rawData = new byte[1024 * 1024];   // 1 MB of null data
  17.  
  18.         static void ClientAsSender()
  19.         {
  20.             var targetHost = IPAddress.Loopback;
  21.  
  22.             TcpClient client = new TcpClient();
  23.             client.Connect(targetHost, port);
  24.             var networkStreamRaw = client.GetStream();
  25.             var networkStreamCompressed = new DeflateStream(networkStreamRaw, CompressionMode.Compress);
  26.             using (client)
  27.             using (networkStreamRaw)
  28.             using (networkStreamCompressed)
  29.             {
  30.                 networkStreamCompressed.Write(rawData, 0, rawData.Length);
  31.                 Console.WriteLine("{0} bytes of raw-data sent.", rawData.Length);
  32.             }
  33.         }
  34.  
  35.         static void ServerAsReceiver()
  36.         {
  37.             TcpListener listener = new TcpListener(IPAddress.Loopback, port);
  38.             listener.Start();
  39.             var client = listener.AcceptTcpClient();
  40.             var stream = client.GetStream();
  41.             using (client)
  42.             using (stream)
  43.             {
  44.                 var temp = new MemoryStream();
  45.                 stream.CopyTo(temp);
  46.                 Console.WriteLine("{0} bytes of compressed-data received.", temp.Length);
  47.             }
  48.             listener.Stop();
  49.         }
  50.  
  51.         static void Main(string[] args)
  52.         {
  53.             var server = Task.Factory.StartNew(ServerAsReceiver);
  54.             var client = Task.Factory.StartNew(ClientAsSender);
  55.             server.Wait();
  56.             Console.WriteLine("press enter to exit . . .");
  57.             Console.ReadLine();
  58.         }
  59.     }
  60. }
Add Comment
Please, Sign In to add comment