socket上传输大文件时,如何能提高传输的效率?

既然是Socket 那就是传2进制的数据 也就是字节数组 使用 某种网络协议,点对点的传输数据。

提高的效率可以分为三部分!

  1. 网络情况。  下哔片什么的我们这里不讨论,但是首先你要明确你的网络类型,你的带宽允许你多大的传输量才好写程序。网卡我们暂时不讨论。

 2. 服务器情况。  国内的网络运营商都会 限制很多机房服务器的上传限额。下行200k 上行可能只有20k。也就是1:10 你网络没问题程序没问题,服务器不吃,也没办法! 所以这个也要解决。

3 如果上面两个都不是问题,那就完全是程序方面的了,我们开始讨论。

    假设你需要制作一个提供至少1G 的单体文件上传,你会怎么办。我想你绝对不会 搞一个线程 慢慢读过去。

为什么? 因为如果断网,死机,或者停电,你又要从头来。

 所以 效率这个概念既然提出来了就不光是速度问题。还有实用性的问题。但是我们不上升到一个完整的下载上传软件的高度。

     所以你可以看到以下的概念:

       上传端:

       (1). 将你的文件包分割成数据模型,并以一个配置文档描述。这个文档可以很小 1G的文件几k足以。

          (2) 根据分割情况开启数个线程,根据你的网络情况去调整你的每一传输线程里的 byte数组大小。

         (3) 控制好线程管理, 如果这个程序能独享一台电脑的话 就全部全力工作。

        接收端:

         首先接收到你的说明文件 ,然后根据情况开启接受程序,并按照你的说明文件,将每个线程里的数据重构到一个临时文件里。并且开始重写说明文件,介绍各个情况的进度,与位置。

        于是 一个简单的断点续传就这么出来了。

          传输效率这是个很大的命题,算法是一部分,形式是一部分,网络是最重要的一部分。

         以上。

你可能感兴趣的:(socket上传输大文件时,如何能提高传输的效率?)