繁体   English   中英

通过TCP传输文件的最有效方法

[英]Most efficient way to transmit file over TCP

我目前正在通过Gzip压缩文件,然后将其转换为base64字符串来传输文件,它运行良好,但是我想尽可能提高效率,因为我确信这不是最好的处理方法,因为由于Base64,尺寸增加了33%。

我正在考虑的另外两个选项是直接读取和写入字节或序列化对象并将其发送。

就空间而言,最好的方法是什么? (我正在尝试使文件的大小尽可能小)。文件相对较小,大约100kb。 我将不胜感激。

如果您不想先发长度,你可以使用此方法-你已经获得后NetworkStream对象形成的连接-从流中读取的所有数据。 同样,您的情况也不需要base64,因此此解决方案可以读取一个字节数组,该数组将通过NetworkStream从发送方接收。

public static byte[] ReadFully(Stream input)
{
    byte[] buffer = new byte[16*1024];
    using (MemoryStream ms = new MemoryStream())
    {
        int read;
        while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
        {
            ms.Write(buffer, 0, read);
        }
        return ms.ToArray();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM