我们都知道.Net具有与ftp相关的类,我经常看到人们总是使用很少的ftp属性,称为:

wrq.KeepAlive = false;
wrq.UseBinary = false;
wrq.UsePassive = true;


谁能告诉我KeepAliveUseBinaryUsePassive是什么意思?

当我们为上述属性设置true或false时,会发生什么情况,特别是告诉我UsePassive属性的用途或含义是什么。

一个人简要介绍了被动模式:

UsePassive:
如果客户端应用程序的数据传输过程在数据端口上侦听连接,则为false;否则为false。否则,如果客户端应在数据端口上启动连接,则为true。默认值是true

上述答案对我来说不是很清楚。这样任何人都可以更详细地说明被动模式。

最佳答案

也许这些MSDN文章可以为您提供帮助?


  活着
  
  获取或设置一个布尔值,该值指定在请求完成后是否关闭与FTP服务器的控件连接。
  
  当KeepAlive属性设置为false时,在调用Close方法时将关闭控件连接。
  
  在调用GetRequestStream,BeginGetRequestStream,GetResponse或BeginGetResponse方法之后更改KeepAlive会导致InvalidOperationException异常。
  
  http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.keepalive.aspx





  UseBinary
  
  获取或设置一个布尔值,该值指定文件传输的数据类型。
  
  如果要发送二进制数据(例如图像),请将此属性设置为true。如果要发送文本,请将属性设置为false。指定true会导致FtpWebRequest向服务器发送“ TYPE I”命令。指定false会使FtpWebRequest向服务器发送“ Type A”命令。 FTP服务器可以忽略这些命令。
  
  在调用GetRequestStream,BeginGetRequestStream,GetResponse或BeginGetResponse方法之后更改UseBinary会导致InvalidOperationException异常。
  
  http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx





  使用被动
  
  获取或设置客户端应用程序的数据传输过程的行为。
  
  将UsePassive属性设置为true会将“ PASV”命令发送到服务器。此命令请求服务器侦听数据端口并等待连接,而不是在收到传输命令后启动连接。
  
  有关使用UsePassive指定的行为的说明,请参见RFC 959,“文件传输协议”,第3.2节,“建立数据连接”和第4.1.2节,“传输参数命令”,位于http://www.rfc-editor.org/
  
  在调用GetRequestStream,BeginGetRequestStream,GetResponse或BeginGetResponse方法之后更改UsePassive会导致InvalidOperationException异常。
  
  如果UsePassive设置为true,则FTP服务器可能不会发送文件大小,并且下载进度始终可以为零。如果UsePassive设置为false,则防火墙可以发出警报并阻止文件下载。
  
  http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usepassive.aspx

10-04 11:10