基于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,作一个服务器状态监控和记录查询的较为复杂的软件。加密

相关文章
相关标签/搜索