.NEt中的Ftp组件使用

转载 2007年09月27日 09:05:00
来源:凤凰涅磐 - 新浪BLOG
  在最近的工作中,多次和Ftp打交道。真是吃尽苦头~~
  各地的系统都要上伪码,需要文件的Ftp上传和下载。本身的ftp上传下载是没有问题,但是由于各地的网络不同,就带来了一些问题。

  首先头疼的是Ftp的权限不够,部分由于与其他小组之间的沟通不够,其次是对ftp的了解不深,ftp的操作完全是组件进行的,无法进行自己的开发。没有处理好这些异常。

  其次由于各地的网络不同,有个已经了业务和内容系统的分离,网络不在一个交换机。这就带来了一个Ftp端口的问题--被动模式还是主动模式去链接服务器。俺不懂这个,开始还把责任推延到网络问题上。现在想想真是不应该,有点草率的下结论。细细想想,自己的问题还没有解决好。
  首先了解一下基础知识:
  FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

  在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

  在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

  总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

  被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

  虽然说被动模式是良好的工作模式,但是网络不支持啊~~~由于对端口的严格限制,使用被动模式是不可能的。

  由于我使用的Ftp组件在代码中使用了被动模式,我们在网络搜索很多关于主动和被动模式设置的问题,但是多是客户端软件的设置,在C#中怎么设置还是问题。

  就在这个问题上,我投入了很多时间。主要在修改被动模式的PASV到主动模式上,主动模式网上的资料有:PORT、Stardard、Active等。我用来替换测试都不行。

  最大的问题在于,我需要解决Ftp上传的问题,在我使用的这个组件上,我浪费太多的时间去修改,却没有意识到这个组件是不支持主动模式。

  这就是我用6个小时去解决,前4个小时在不断的修改测试,最好发现只需要变通一下就可以解决,并且不用写报告了~~
  这一篇先写这些,下一篇写Ftp的组件使用说明、主动和被动模式在代码的体现~~ 

相关文章推荐

开源.NET FTP组件edtFTPnet.dll

  • 2013年09月26日 15:59
  • 164KB
  • 下载

apache.commons.NET.FTP使用小结

啥也不说,先上代码: /** * Desc:FTP工具,实现上传、下载功能 * Author:chenza * Date:Feb 17, 2011 3:27:42 PM **/ ...

使用 org.apache.commons.net.ftp.FTPClient 实现下载功能 执行第二次时 会在input = ftpClient.retrieveFi

使用 org.apache.commons.net.ftp.FTPClient 实现下载功能 执行第二次时 会在FTPListParseEngine engine = ftpClient .initi...
  • sxlvxh
  • sxlvxh
  • 2012年08月31日 16:44
  • 458

使用commons.net 闰年 ftp文件的问题。

2012年2月29日凌晨给核心系统进行了升级,升级的是后台的C程序。升级后时刻注意升级后的情况。 到10多的时候,到机房去看看运行情况,结果发现有好多人在机房解决问题,一打听,是前置等几个系统某些使...

使用WinSCP .Net Assembly访问FTP with TLS Explicit Encryption

最近有一个任务需要我用.Net实现一个程序来访问FTP。这个FTP使用的加密方式是TLS Explicit Encryption,并且使用Proxy。以前一直使用System.Net.FtpWebRe...

使用comment.net的FTP工具后支持完美的断点上传和下载

使用comment.net的FTP工具后支持完美的断点上传和下载首先,在查阅各种资料后,发现在Java或者Android上使用FTP的工具不明显,但不是不多,最后发现最明显也是最好用的就是Apache...

asp.net中URLRewriter组件使用

  • 2013年11月14日 21:09
  • 2KB
  • 下载

实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假申请流程-WinForm

实例演示使用RDIFramework.NET 框架的工作流组件进行业务流程的定义—请假流程-WinForm RDIFramework.NET工作流程组件是以RDIFramework.NET框架为支撑,...

使用C#.NET实现FTP文件下载

  • 2008年10月30日 15:11
  • 80KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.NEt中的Ftp组件使用
举报原因:
原因补充:

(最多只允许输入30个字)