C#套接字重构(数据发送)

4

假设Byte[] refArchiveData的大小约为30-100兆字节。我想使用NetworkStream stream对象将其发送到服务器:

            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();

我需要修改发送归档文件的代码部分吗?也许可以将其分割成256-512字节的块进行发送?谢谢任何建议!
1个回答

7
使用Stream.CopyTo方法。这样就不需要将整个文件加载到数组(内存)中了。
using (var file = File.OpenRead("<path to file>"))
using (var client = new TcpClient("<server>", <port>))
using (var netStream = client.GetStream())
{
    ...
    file.CopyTo(netStream);
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接