【问题标题】:C# socket refactoring (data sending)C# 套接字重构(数据发送)
【发布时间】:2010-12-13 11:36:27
【问题描述】:

想象Byte[] refArchiveData 的大小约为 30-100 MB。我想使用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 字节的块?

感谢您的建议!

【问题讨论】:

    标签: c# sockets networking refactoring


    【解决方案1】:

    使用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);
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-23
      • 2016-06-06
      • 2018-05-23
      • 2013-11-28
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多