iOS之SFTP请求

SFTP请求网上的资料比较少,我自己也查很久才有了进展.当然这里也是使用了三方框架进行请求的,这个三方框架叫做 "NMSSH".
此框架并不支持中途的停止操作,只允许下载,中途如果网络异常后又恢复,它还可以继续执行下载操作.为了满足需求,我对框架进行了小改动,使它能够实现暂停操作.!

首先,这个框架中有多种方案可以实现SFTP下载.我选择使用的是其中的NMSSHChannel实现.那么如何进行终止操作呢?

  • 通过NMSSHChannel.h我们可以找到一个属性 : bufferSize
bufferSize.png
  • 从注释不难看出,如果不进行设置,它大小默认会给出0x4000,经过试验,这个默认值是最大值,传入任何比这个大的数值都会引发崩溃...

  • 那么这个值是用来做什么的呢?请看下图 :


    bufferSize在.m中.png
  • 好吧,这里我对代码的大致理解已经写在图中了.不难看出,got即为当前获取的文件总大小,而amount为服务器告诉给我们的文件实际大小,通过一个while循环,实现文件的完整下载.

  • 那么停止是如何做到?说起来也简单,就是在你需要的时刻,将bufferSize大小设置为0,这样就可以做到了.

  • 其它需要注意的地方 :

    • 当bufferSize为0时,请关闭channel,调用closeShell方法.并在内部将channel置空,返回, 目的是解决野指针崩溃问题.
      内部将channel置空并返回.png
    • 如何实现返回小数值?目的是实现项目中高精确度需求
      返回小数值.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在这个“猴年马月”的日子里,魔兽电影版终于今晚要在中国区上映了。【魔兽世界】自2005年被引进中国已经11年的时间...
    影视大亨阅读 1,594评论 0 0
  • 今别不知何时遇 别离只为后再续 情若长久莫朝暮 花开并蒂明日时
    诗中有诗阅读 1,063评论 0 2

友情链接更多精彩内容