我们都知道.Net具有与ftp相关的类,我经常看到人们总是使用很少的ftp属性,称为:
wrq.KeepAlive = false;
wrq.UseBinary = false;
wrq.UsePassive = true;
谁能告诉我
KeepAlive
,UseBinary
和UsePassive
是什么意思?当我们为上述属性设置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