开发 .NET 下的 FTP 客户端组件

来源:互联网 发布:vhms域名接口 编辑:程序博客网 时间:2024/05/22 10:25

最近有个项目需要支持 FTP 访问,但是 .NET 1.1 FCL 中没有提供相关的类,所以只好自己开发一个 FTP 客户端组件了。不过,我是一个懒惰型的程序员,当然不会一拿到需求就埋头苦干啦,呵~现在 Internet 如此发达,到处充满了有用的信息,到处充满了无限的商机,到处充满了可以利用的资源,到处充满了恐龙-_-! 男士们小心哦,嘻~

 

话归正题,我建议在自己开发一个 FTP 客户端组件或在使用一些开源的 FTP 客户端组件之前,先补充一下 FTP 协议相关的基础知识,这有会对你掌握 FTP 客户端组件的工作原理很有帮助。下面推荐几篇网上的文章,一般只要看完前三篇就行了:

 

l         浅析FTP的工作原理

l         文件传输协议(File Transfer Protocol, FTP

l         FTP命令详解

l         FTP协议的分析和扩展

 

       我在开发 FTP 客户端组件的过程中,参考了好几个开源项目,其实它们的工作原理一样的,只是看作者的设计如何,最终的效果主要表现在易用性、稳定性、可扩展性和兼容性上。

 

edtFTPnet

http://www.enterprisedt.com/products/edtftpnet/

 

edtFTPnet 是由 Enterprise Distributed Technologies 公司开发的一个 FTP 客户端组件,功能完善、文档齐全,并且项目使用了测试驱动开发(从源码看出)。这也是我选择它的主要原因。特点有:

l         支持主动模式(PORT)和被动模式(PASV

l         支持二进制传输被中断后续传

l         支持通过事件监视传输进度

edtFTPnet不支持 SOCKS 代理和 FTPS,这两个功能在该公司的 edtFTPnet/PRO 产品中支持。

 

FTP Component

 

http://www.codeproject.com/dotnet/dotnetftp.asp

FTP Component 是由 Alex Kwok 开发的,除了不支持主动(PORT)模式外,其他功能跟上面的 edtFTPnet 差不多,组件的代码组织还可以,看起来很好用。我没有使用它的原因就是:用它上传文件没有问题,下载却总是找不到文件,跟踪了一下大概是在 list 命令那里出毛病。基于时间紧迫和本人是网络编程白痴,所以没有时间去慢慢研究。知道原因的朋友记得告诉我啊。

 

FtpClient

http://www.sunmast.com/soft/ftpclient.zip

       FtpClient 组件是 Sunmast 兄弟很久以前(大学)写的,他说 bug 不少,我听了怕怕的。这个组件是第一个被我开刀的,大问题没有,就是不支持传输进度的事件跟踪,基于时间问题,所以就放弃了。Sunmast 说不打算更新该组件了,因为 .NET 2.0 已经支持 FTP 了。打开Visual Studio .NET 2005 的类库文档一看,在 System.Net 下果然多了 FtpWebRequest FtpWebResponse 两个类,还有一个 FtpStatusCode 枚举。当时有一股冲动想用 Reflector .NET 2.0 中的这三个类移植到 .NET 1.1 下,可是打开一看,一大堆看不懂,所以就没有“搞破坏”了。有兴趣的朋友可以试一试,记得搞定后把结果发给我就是啦。

 

.NET FTP Client

 

http://sourceforge.net/projects/dotnetftpclient/http://sourceforge.net/projects/dotnetftpclient/

这个是在 SourceForge 找到的,功能设计地比较简单,代码连注释都没有,干干净净地,狂晕。

 

其他的我没有用过,所以就不介绍了,最后一个是 FTP 服务器,不是 FTP 客户端。大家可以自己试一试,好用记得告诉我哦。

 

FTP.NET

 

http://sourceforge.net/projects/ftpnet/

Multi-threaded FTP Program written in C#

 

Ftp4net

 

http://sourceforge.net/projects/ftp4net/

Ftp4net is a C# class for communication with FTP Server, which conforms to the RFC 959 (FTP). It/'s an API that handles all FTP protocol commands. This class is designed for creating FTP Client software with .NET

 

Ftp Dot Net

http://sourceforge.net/projects/ftpcs/

 

Ftp Dot Net is a Ftp Server written in C#. It runs on Windows 2000/XP/2003 and Framework 1.1. It provide windows / Active Directory / NTFS authentication and permissions, Isolated ftp roots and Virtual Paths.

 

 

我要说的就这么多了,剩下的你们来写吧!

 

 

黎波

2005-4-30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击