1.概述
SFTP與FTP差不多,幾乎一樣的語法.SFTP本身沒有單獨的守護程序,必須使用SSHD守護進程(端口號默認是22)來完成相應的連接操作.SFTP不像一個服務器程序,更像是一個客戶端程序.而且SFTP同樣是使用加密傳輸認證信息和傳輸的數據.所以,使用SFTP是安全的.但是,由於使用了加解密技術,所以效率會比普通的FTP要低很多,但是如果對安全要求較高的話,可以使用SFTP代替FTP.
SSH協議:傳輸層協議,用戶認證協議,連接協議
2.client端開發
string fileLongName = sh.ls(remotePath);
string[] sl = fileLongName.Split(new Char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
//sl[4] is file size
之後調用
public bool DPut(string remotePath, string localPath,int offset)//斷點續傳 { try { Tamir.SharpSsh.java.io.InputStream src = new FileInputStream(localPath); Tamir.SharpSsh.java.String dst = new Tamir.SharpSsh.java.String(remotePath); src.Seek(offset, SeekOrigin.Begin); // src.Seek(-15, SeekOrigin.End); m_sftp.put(src, dst, ChannelSftp.APPEND); src.close(); return true; } catch { return false; } }
多線程傳輸:
方法一:首先將文件分割成N個文件,之後起m個線程,每個線程對那些文件進行傳輸,然後每個線程都使用斷點傳輸,那樣就比較快了.當所有傳好之後就起一個socket,告訴對方已經傳完,之後就按照每個文件的文件名來重組成一個文件.方法二:首先在目標path中新建一個等大的文件,之後起m條線程,之後記錄下其實位置,然後就可以使用那個斷點傳輸,使用一個臨時文件來記錄下當前線程傳輸進度就可以了.那樣就不怕斷網了.斷網後依然可以繼續續傳