c# 访问ftp

ftp从服务器上获取通讯设备吐出的mr数据,该方案估计在通讯行业上一个很广泛的一种方案,很奇怪为何不把这些数据直接存储到数据库中呢,好比hadoop,反而还须要第三方搞网优的软件开发人员从ftp上读取成千万的mr文件信息。数据库

这种方案估计已经成公认的方案,可能缘由:c#

1,这样的文件格式的不一样意,数据库很难定义格式,规则;windows

2,数据库的制约行吧,数据库比起写文件来讲仍是差了不少吧。无论从速度上,仍是灵活性来讲,使用数据库在通讯服务商来讲该方案不可行性,简直是不接受。服务器

很天然的事情,咱们不是只读本地几十,几百G的文件了,而是要变成从ftp上获取到这么多数据,以后去处理这些数据。该须要对软件来讲,无心ftp的稳定性,网络的稳定性必要要求高。网络

因此这种方案,必须ftp的服务必须在内网,外网的方式估计做死的节奏。内网对网络传输速度,稳定性方面已经提高了不少。ide

其次咱们要处理的事情,要求:oop

1,) 使用c#去读取ftp上的数据,该技术已经很成熟。测试

2,) 须要测试本身部署一个ftp服务,使用ftp客户端来调试,获取ftp信息,能获取到什么信息。spa

搭建serv-u:调试

1,)从网络上下载serv-u,我选择了低版本的ftp,

2,)配置好帐户,分配用户:test,密码:123456,权限adiminstrator,全部权限(读、写、删、移动、重命名文件|文件夹);

为了调试ftp服务及帐号状态,须要下载一个ftp客户端.

我使用cute ftp,

链接地址localhost,帐号输入test,密码输入:123456,测试没问题,正常联通:

怎么使用c#读取ftp上相关信息:

看到codeplex上已经有人写出来无缺的ftp client类(开源代码地址:http://ftplib.codeplex.com/,该类库使用的方式是经过windows内核接口来获取),就拿来测试了

测试代码:

 const string HOSTNAME = "localhost";
        const string USERNAME = "test";
        const string PASSWORD = "123456";

        static void Main(string[] args)
        {
            using (FtpConnection ftp = new FtpConnection(HOSTNAME, USERNAME, PASSWORD))
            {
                ftp.Open(); /* Open the FTP connection */
                ftp.Login(); /* Login using previously provided credentials */

                if (ftp.DirectoryExists("/test")) /* check that a directory exists */
                    ftp.SetCurrentDirectory("/test"); /* change current directory */

                  ftp.SetLocalDirectory(@"E:\ftp-test");

                  if (ftp.FileExists("/test/1/dn.accdb")) /* check that a file exists */
                      ftp.GetFile("/test/1/dn.accdb", @"E:\ftp-test\1\dn.accdb", false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */

                //do some processing

                //try
                //{
                //    ftp.SetCurrentDirectory("/outgoing");
                //    ftp.PutFile(@"c:\localfile.txt", "file.txt"); /* upload c:\localfile.txt to the current ftp directory as file.txt */
                //}
                //catch (FtpException ex)
                //{
                //    Console.WriteLine(String.Format("FTP Error: {0} {1}", ex.ErrorCode, ex.Message));
                //}

                foreach (var dir in ftp.GetDirectories())
                {
                    Console.WriteLine(dir.Name);

                    foreach (var file in dir.GetFiles(dir.Name))
                    {
                        Console.WriteLine(file.Name);
                    }
                }

                Console.ReadKey();
            }
        }

 

输入结果都可以正常链接,获取信息:

以上算是一个测试ftp的一个过程吧,但针对咱们的项目,这些是一个基本功。

 

但愿有更多牛人,给更多的建议...

相关文章
相关标签/搜索