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