iOS之SFTP請求

SFTP請求網上的資料比較少,我自己也查很久才有了進展.當然這里也是使用了三方框架進行請求的,這個三方框架叫做 "NMSSH".
此框架并不支持中途的停止操作,只允許下載,中途如果網絡異常后又恢復,它還可以繼續(xù)執(zhí)行下載操作.為了滿足需求,我對框架進行了小改動,使它能夠實現暫停操作.!

首先,這個框架中有多種方案可以實現SFTP下載.我選擇使用的是其中的NMSSHChannel實現.那么如何進行終止操作呢?

  • 通過NMSSHChannel.h我們可以找到一個屬性 : bufferSize
bufferSize.png
  • 從注釋不難看出,如果不進行設置,它大小默認會給出0x4000,經過試驗,這個默認值是最大值,傳入任何比這個大的數值都會引發(fā)崩潰...

  • 那么這個值是用來做什么的呢?請看下圖 :


    bufferSize在.m中.png
  • 好吧,這里我對代碼的大致理解已經寫在圖中了.不難看出,got即為當前獲取的文件總大小,而amount為服務器告訴給我們的文件實際大小,通過一個while循環(huán),實現文件的完整下載.

  • 那么停止是如何做到?說起來也簡單,就是在你需要的時刻,將bufferSize大小設置為0,這樣就可以做到了.

  • 其它需要注意的地方 :

    • 當bufferSize為0時,請關閉channel,調用closeShell方法.并在內部將channel置空,返回, 目的是解決野指針崩潰問題.
      內部將channel置空并返回.png
    • 如何實現返回小數值?目的是實現項目中高精確度需求
      返回小數值.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在這個“猴年馬月”的日子里,魔獸電影版終于今晚要在中國區(qū)上映了。【魔獸世界】自2005年被引進中國已經11年的時間...
    影視大亨閱讀 203評論 0 0
  • 今別不知何時遇 別離只為后再續(xù) 情若長久莫朝暮 花開并蒂明日時
    詩中有詩閱讀 105評論 0 2