假设 Byte[] refArchiveData
的大小约为 30-100 MB。我想使用 NetworkStream 流
对象将它发送到服务器:
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 字节的 block ?
感谢您的任何建议!
最佳答案
使用 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);
...
}
关于C# socket重构(数据发送),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4428407/