基於SFTP的文件拷貝軟件(二)

 

上次在使用Renci.SshNet組件時,每次調用Connect()方法,都回拋出個異常,aborted by software on host machine之類的。網上搜了好久,沒有說清楚的,有的說防火牆擋住了,也有說主機加密算法不支持等。後來爲了儘快實現功能,找了個收費組件ComponentPro,試用1個月。收費的就是6,沒報錯。git

目前軟件基本功能實現了,須要考慮長期使用的問題,因此又研究了一番。用SshNet組件鏈接個人阿里雲服務器就沒報錯,鏈接個人VMWare Ubuntu就報錯。一度懷疑人生。最後在GitHub上找到了開源項目本體,down下來以後引用竟然沒有以前的錯誤了,我也是醉了。附上SshNet本體地址:https://github.com/sshnet/SSH.NETgithub

 

那麼問題已經消除,可是SshNet組件的下載,尤爲是遍歷目錄中全部文件的下載,作的不是很方便,須要本身寫代碼。能夠參考這裏,https://benohead.com/downloading-files-directories-via-sftp-using-ssh-net/  算法

爲了報告下載處理結果,主要是處理的文件夾和文件數量,又寫了個類:服務器

 1 public class ProcessedData
 2     {
 3         private ArrayList processedDirList;
 4         private ArrayList processedFileList;
 5         //private int processedDirCount;
 6         //private int processedFileCount;
 7 
 8         public ProcessedData() {
 9             processedDirList = new ArrayList();
10             processedFileList = new ArrayList();
11         }
12 
13         public ArrayList GetProcessedDirList() {
14             return this.processedDirList;
15         }
16 
17         public void AddToProcessedDirList(string dir) {
18             this.processedDirList.Add(dir);
19         }
20 
21         public void AddToProcessedFileList(string file) {
22             this.processedFileList.Add(file);
23         }
24 
25         public ArrayList GetProcessedFileList() {
26             return this.processedFileList;
27         }
28 
29         public int ProcessedDirCount { get { return processedDirList.Count; } }
30 
31         public int ProcessedFileCount { get { return processedFileList.Count; } }
32     }

 

對於目標服務器上的目錄和文件,某人說須要一個篩選,要否則可能要從幾百個文件裏面找,要瞎了,因此加了個Filter。原本考慮練習下正則,後來一想,好像並不須要,用String.Contains()方法就好了。目前是這個樣子了:ssh

輸入字符後:this

 

不要問爲何右邊有那麼大空白,由於之後還可能加拖拽拷貝功能,右邊也可能作個LargeIcon的目錄,因此先留着。阿里雲

這個軟件大體如此了,目前打算看看WPF,作一個服務器狀態監控和記錄查詢的較爲複雜的軟件。加密

相關文章
相關標籤/搜索