C # socket refactoring (sending data)

Imagine that Byte[] refArchiveData is around 30-100 megabytes. I want to send it to the server using the NetworkStream stream object:

  TcpClient client = new TcpClient(server, port); Byte[] refLengthBytes = new Byte[4]; Byte[] refArchiveData = null; refArchiveData = File.ReadAllBytes("C:/Temp/Python25.zip"); Console.WriteLine("Archive data length is {0}", refArchiveData.Length); NetworkStream stream = client.GetStream(); refLengthBytes = System.BitConverter.GetBytes(refArchiveData.Length); stream.Write(refLengthBytes, 0, 4); stream.Write(refArchiveData, 0, refArchiveData.Length); stream.Close(); client.Close(); 

How can I change the part of the code to which I send my archive? Maybe break it into pieces of 256-512 bytes?

Thanks for any advice!

+4
source share
1 answer

Use the Stream.CopyTo method. Thus, you do not need to load the entire file into an array (into memory).

 using (var file = File.OpenRead("<path to file>")) using (var client = new TcpClient("<server>", <port>)) using (var netStream = client.GetStream()) { ... file.CopyTo(netStream); ... } 
+7
source

All Articles