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 = ""; 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的一个过程吧,但针对我们的项目,这些是一个基本功。
希望有更多牛人,给更多的建议...
c# 访问ftp的更多相关文章
- CentOS7 FTP服务搭建(虚拟用户访问FTP服务)
概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...
- java访问ftp的一些操作
通过java代码来访问ftp服务器,进行下载操作
- Linux 终端访问 FTP 及 上传下载 文件
今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上.google 一下. 方 ...
- Linux 终端访问 FTP 及 上传下载 文件[转]
1. Linux 终端连接FTP [oracle@Dave ~]$ ftp 10.85.7.97 Connected to 10.85.7.97. 220 Serv-U FTP Server ...
- 搭建、访问ftp
FTP是文件传输协议,是在网络上进行文件传输的协议,使用的是C/S模式,属于网络传输协议的应用层.FTP是讲文件从一台计算机传送到另一台计算机上,不受操作系统的限制,TCP端口号是21,数据库端口号是 ...
- 关于Centos7 firewalld防火墙开放端口后仍不能访问ftp和nginx的问题解决
我在阿里轻量应用服务器搭建ftp服务器这篇博客中把防火墙换为iptables,因为当时无论我怎么设置firewalld,就是无法访问ftp服务器,今天在翻看其他博客的时候,突然发现firewalld有 ...
- linux上搭建ftp、vsftp, 解决访问ftp超时连接, 解决用户指定访问其根目录,解决ftp主动连接、被动连接的问题
linux上搭建ftp 重要 解决如何搭建ftp 解决用户指定访问其根目录 解决访问ftp超时连接 解决ftp主动连接.被动连接的问题 1.安装ftp ...
- 浏览器通过http协议通过nginx访问ftp服务器上的文件
1.修改nginx配置文件 2.修改nginx默认目录为ftp默认目录 3.修改成自定义路径后,并修改此目录第一行,修改为root或是nginx用户 4.重新加载 cd /usr/local/ngin ...
- Linux Centos 通过虚拟用户访问FTP的配置
Linux Centos 通过虚拟用户访问FTP的配置 实验需求: 让下面4个虚拟用户使用系统用户ftpvu的权限来连接到Linux FTP服务器,并确保都锁定在 自己的虚拟用户目录,不能切换到其他目 ...
- 访问FTP站点下载文件,提示“当前的安全设置不允许从该位置下载文件”的解决方案
访问FTP站点下载文件,提示“当前的安全设置不允许从该位置下载文件”的解决方案: 打开客戶端浏览器--工具---internet-安全-自定义级别-选择到低到中低. 然后点受信任站点,把你要访问的站点 ...
随机推荐
- ExtJS笔记5 Components
参考 :http://blog.csdn.net/zhangxin09/article/details/6914882 An Ext JS application's UI is made up of ...
- osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)的理解
osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)与osal_set_event(Music_Ta ...
- wordpress页面前端添加编辑按钮
<?php edit_post_link(__('Edit This')); ?> 在single.php或者page.php模板页面加入以上代码片段.当管理员登录后,可以直接点击编辑文章 ...
- unity3d中控制物体移动方法有那些及区别
1. 利用GameObject的Translate,直接改变它的Transform,前提是需要你实现准备变换矩阵.2. 用MoveTo方法,你只要知道你的目标位置即可.3. 用Math的Lerp方法计 ...
- BLE蓝牙的广播类型
广播的类型一般分为四种,见如下表格: 1. 可连接的非定向广播(Connectable Undirected Event Type): 这是一种用途最广的广播类型,包括广播数据和扫描响应数据,它表示当 ...
- github中国版本coding.net 的部署和使用
1.在coding.net注册帐号. 2.安装github,自己百度github软件然后安装. 3.打开coding.net 输入帐号后新建项目 创建项目 创建后,创建ssh公钥,如果不创建的话,在每 ...
- H264关于RTP协议的实现
完整的C/S架构的基于RTP/RTCP的H.264视频传输方案.此方案中,在服务器端和客户端分别进行了功能模块设计. 服务器端:RTP封装模块主要是对H.264码流进行打包封装:RTCP分析模块负责产 ...
- Android笔记:java 中的数组
在与嵌入式设备通讯的过程中使用的socket通讯 获取的字节流,通常转换为字节数组,需要根据协议将字节数组拆分.对于有规律的重复拆分可以使用,由于java中不能像c中直接进行内存操作例如使用struc ...
- 面向对象分析方法(I)
找出最关键的一些业务场景:一般通过动词来寻找,比如招聘系统中,一个应聘人投递一个职位就是一次应聘,应聘就是一个业务场景:一个学生参加某门课的考试,那么考试就是一个业务场景:一个学生去图书馆借书,那么借 ...
- Java学习-035-JavaWeb_004 -- JSP include 指令
inclue 指令是将不同的文件插入到 JSP 网页中,这些文件可以是文本文件.HTML文件.JSP 文件,指令语法如下: <%@include file="相对路径"%&g ...