既然是Socket 那就是传2进制的数据 也就是字节数组 使用 某种网络协议,点对点的传输数据。算法
提升的效率能够分为三部分!数组
1. 网络状况。 下哔片什么的咱们这里不讨论,可是首先你要明确你的网络类型,你的带宽容许你多大的传输量才好写程序。网卡咱们暂时不讨论。 2. 服务器状况。 国内的网络运营商都会 限制不少机房服务器的上传限额。下行200k 上行可能只有20k。也就是1:10 你网络没问题程序没问题,服务器不吃,也没办法! 因此这个也要解决。 3 若是上面两个都不是问题,那就彻底是程序方面的了,咱们开始讨论。 假设你须要制做一个提供至少1G 的单体文件上传,你会怎么办。我想你绝对不会 搞一个线程 慢慢读过去。
为何? 由于若是断网,死机,或者停电,你又要从头来。服务器
因此 效率这个概念既然提出来了就不光是速度问题。还有实用性的问题。可是咱们不上升到一个完整的下载上传软件的高度。 因此你能够看到如下的概念: 上传端: (1). 将你的文件包分割成数据模型,并以一个配置文档描述。这个文档能够很小 1G的文件几k足以。 (2) 根据分割状况开启数个线程,根据你的网络状况去调整你的每一传输线程里的 byte数组大小。 (3) 控制好线程管理, 若是这个程序能独享一台电脑的话 就所有全力工做。 接收端: 首先接收到你的说明文件 ,而后根据状况开启接受程序,并按照你的说明文件,将每一个线程里的数据重构到一个临时文件里。而且开始重写说明文件,介绍各个状况的进度,与位置。 因而 一个简单的断点续传就这么出来了。 传输效率这是个很大的命题,算法是一部分,形式是一部分,网络是最重要的一部分。 以上。