iOS之SFTP请求

作者: xymspace | 来源:发表于2017-11-15 11:05 被阅读8次

    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

    相关文章

      网友评论

        本文标题:iOS之SFTP请求

        本文链接:https://www.haomeiwen.com/subject/sbfcvxtx.html