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

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

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

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

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

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

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

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

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

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

       上传端:

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

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

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

        接收端:

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

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

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

         以上。

转载于:https://my.oschina.net/u/571157/blog/114503

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值