c# 访问ftp

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

这种方案估计已经成公认的方案,可能原因:

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

2,数据库的制约行吧,数据库比起写文件来说还是差了很多吧。不管从速度上,还是灵活性来说,使用数据库在通信服务商来说该方案不可行性,简直是不接受。

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

所以这种方案,必须ftp的服务必须在内网,外网的方式估计作死的节奏。内网对网络传输速度,稳定性方面已经提升了很多。

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

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

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

搭建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的一个过程吧,但针对我们的项目,这些是一个基本功。

希望有更多牛人,给更多的建议...

时间: 2024-08-25 21:28:21

c# 访问ftp的相关文章

C# 实现访问FTP服务器下载文件,获取文件夹信息小记

最近因为要开发广告制作工具,自动生成广告流,需要获取第三方服务器上的文件资源,经过摸索,从这次经历中记录下. FtpWebRequest reqFtp; WebResponse response = null; //获取文件夹信息 reqFtp = (FtpWebRequest)WebRequest.Create(this.ftp);//ftp://IP:port/文件夹名1/文件夹名2/.../文件夹名 reqFtp.UseBinary = true; reqFtp.KeepAlive = f

CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FTP服务器需要安装vsftp服务端软件.我们知道,在建立vsftpd用户时,我们一般是在linux下建立用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比

创建ACL语句使真机访问虚拟服务器的web服务并禁止访问FTP服务详解

创建ACL语句使真机访问虚拟服务器的web服务并禁止访问FTP服务 首先创建拓扑,然后规划好IP地址并连接拓扑线 配置理念是先配置简单的最后配置复杂的. 首先需要保证网络拓扑的互联互通:具体配置如下 R1上面的配置 SW3上面的配置 SW2上面的配置 SW1上面的配置 设置宿主机上的IP地址 打开虚拟机server 2008配置IP地址 给server 2008服务器 添加web服务和FTP服务 点击添加角色之后,再点击下一步,进入这个页面 再点击两次下一步,就会进入这个页面 后面根据提示点击下

解决RouteOS多线路叠加无法访问FTP问题

在公司WEB服务器搭建了PureFTP,搭好后在公司死活连接不上,报错信息如下: 以 PASV 模式连接失败,正在尝试 PORT 模式. 正在侦听端口: 49856,正在等待连接. PORT 192,168,2,37,194,192 200 PORT command successful MLSD 425 Could not open data connection to port 11232: Connection refused 列表 错误 QUIT 换公司另外一条专线或是用手机热点就可以正

Perl 访问FTP

#ftp #ljl #!/usr/bin/perl use strict; use Net::FTP; my $user = "anonymous"; my $passwd = "[email protected]"; my $host = "ftp.freebsd.org"; my $ftp = Net::FTP->new("$host", Debug =>0) or die "Can't connec

[Win7]IE中访问FTP网址不能在资源管理器中打开

问题症状:在计算机或者IE中访问FTP网址,不能在资源管理器中打开.始终只能用IE浏览.网上在IE-视图-在资源管理器中浏览FTP等方法无效. 操作系统:Win7 软件版本:IE 11 处理方法: 保存下面的文件为reg注册表文件并导入注册表 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\ftp] @="URL:File Transfer Protocol" "AppUserModelID"=&quo

Solaris 10下有趣的FTP错误--ROOT不能访问FTP

Solaris 10下有趣的FTP错误--ROOT不能访问FTP 系统环境: 操作系统:Solaris 10 错误现象: [[email protected]:/]#ftp 127.0.0.1 Connected to 127.0.0.1. 220 solaris187 FTP server ready. Name (127.0.0.1:root): root 331 Password required for root. Password: 530 Login incorrect. Login

ie8访问ftp

虽然微软的IE浏览器8.0版本在安全方面进行了增强,但是在访问FTP的功能和方便性上被大幅度的减弱,微软在IE7中已经取消了以前版本对 FTP访问的许多功能.这导致以前使用浏览器访问FTP的用户在使用IE7访问FTP时常遇到一些问题,因此下面提供了二个解决办法: 一.替代方法 第一步:启动 InternetExplorer 8 在菜单栏选择工具-〉Internet 选项 -〉高级 -〉钩选"启用 FTP 文件夹视图 (在InternetExplorer之外)"复选框, 然后单击 确定

CS4:用户在使用IE访问FTP server 时遇到 502代理错误,没有弹出输入用户凭据对话框

客户问题概括:用户在使用IE 访问FTP server 时遇到 502代理错误.用户在浏览器使用 ftp://ftpServerName 访问自检FTP server 时没有提示输入用户凭据报错 502. HTTP 502 Proxy Error - The login request was denied 解决方法: 通过对客户环境进行了解得知 客户使用TMG作为web代理进行FTP访问,告知客户此报错是产品设计报错. 如划线部分:当客户端Web代理访问外部FTP站点时应使用 ftp://us

Linux客户机访问FTP服务器常见的问题及解决办法

在Linux系统中,搭建一个服务,就是修改其配置文件,一般情况下,配置文件的修改出现问题的概率不大,多半是一些其他因素导致客户机与服务器之间访问出现问题,下面就针对客户机访问FTP服务器常出现的一些问题找出解决办法.其他服务的解决办法也类似.1.客户机无法访问FTP服务器如果说客户机无法访问FTP服务器多半是防火墙的作怪,iptables 防火墙管理工具默认禁止了 FTP 传输协议的端口号,因此在正式配置 vsftpd 服务程序之前,为了避免这些默认的防火墙策略"捣乱",还需要清空 i