FTP 协议(指令集)

FTP协议采用一系列简单的协议来完成文件传输的各类任务,在发送命令的时候,老是在命令的最后加上一个回车换行符,在VB中能够用“vbcrlf”来实现,vc中以“/r/n”表示。如下的命令是从Postel和Reynolds所著的RFC 929修改而来,若是读者想查看详细内容,能够参见英文版RFC 929。注意如下出现地标志符CRLF表示的是回车符号,即至关于VC中的“/r/n”。编程

1.  ABOT(Abort,停止)命令

说明:告诉服务器停止上一次FTP服务命令及全部相关的数据传输。服务器

用法:ABOR﹝CRLF﹞数据结构

参数:无。操作系统

例子:.net

SendData "ABOR" + “/r/n”命令行

注释:停止命命令能够请求“特殊操做”以强行引发服务器的重视(详情请参看RFC959)。若是上一次命令已经完成(包括数据传输),就不会致使任何操做。服务器不会关闭控制链接,但必须关闭数据链接。code

服务器在接收到此命令时可能处于两种状态下:(1)FTP服务命令已经完成,(2)FTP服务命令尚在处理中。orm

在第一种状态下,服务器关闭数据链接(若是它是打开的)并响应以226应答,表示已成功执行了停止命令。server

在第二种状态下,服务器停止正处理中的FTP服务并关闭数据链接,返回426应答,表示该服务请求被异常终止。而后服务器发送226应答,表示成功执行了停止命令。blog

l         225  数据链接打开,没有正在进行的传输

l         226  关闭数据链接,请求的文件操做成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         226  链接关闭,传输终止。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

2.  ACCT(Account,账号)命令

说明:指定用户的账号信息。这条命令只能在发送PASS命令并接收到332代码以后发送。

用法:ACCT<Account><CRLF>

参数:Account是用户的账号,访问某些服务时可能另外须要它。

例子:

SendData "ACCTN322s"  + “/r/n

注释:当登陆须要账号信息时,一条成功的PASS命令的响应是应答代码332。反之,若是登陆不须要账号信息,成功的PASS命令的应答是230;若是在对话中后来发出的命令须要账号信息,服务器会返回332或532应答,这分别取决于它是保存(在接收ACCT命令期间)仍是丢弃此命令。

返回值(粗体表示成功):

l         202  命令尚未被实现,在此站点上是多余的。

l         230  用户已登陆,请继续。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         503  命令的顺序不对。

l         530  没法登陆。

3.  ALLO(Allocate,分配)命令

说明:发送文件前在服务器上分配X个字节

用法:ALLO<NumberBytes[<MaxSize>]<CRLF>

参数:NumberBytes是一个整数,表明为该文件保留的内存字节数(使用逻辑字节大小计算)。MaxSize是在使用记录或页数据结构时可选的最大记录或页大小。

例子:

SendData "ALLO 3000 128"  + “/r/n

注释:一些要保留足够内存以容纳将要传输的新文件的服务,会请求这条命令。对于用记录或页结构发送的文件来讲,最大记录或页大小(以逻辑字节计)也多是必需的;它以这条命令的第二个参数字段中的十进制整数表示。这第二个参数是可选的,但在出现时应该与第一个参数三个ASCII字符<SP>P<SP>分隔开。这条命令后跟一条STORe或APPEnd命令。那些不要求事先声明最大文件大小的服务器应该把ALLO命令视为NOOP(不操做),而那些只关心最大记录或页大小的服务器应该受第一个参数的值,而后忽略它。

返回值(粗体表示成功):

l         200  命令成功。

l         202  命令尚未被实现,在此站点上是多余的。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将被关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误

l         501  参数或变元中有语法错误

l         504  命令中尚未实现该参数

l         530  没法登陆。

4.  APPE(Append with create,附加和建立)命令

说明:让服务器准备接收一个文件并指示它把这些数据附加到指定的文件名,若是指定的文件还没有存在,就建立它。

用法:APPE<FileName><CRLE>

参数:FileName是服务器站点上一个彻底合格的路径和文件名。

例子:

SendData "APPE" & szFileName  + “/r/n

返回值以下(粗体表示成功)。

l         110  从新启动标记应答。

在此状况下,文本是精确的,并且不会留给特殊的实现处理;它必须读取:

MARK yyyy=mmmm

其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。

l         125  数据链接已打开,传输启动。

l         150  文件状态没问题,准备打开数据进行链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做没问题,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭;传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         451  请求的操做被停止,处理中发生本地错误。

l         452  请求的操做没法执行,系统的存储空间不足。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         532  文件的存储须要账号。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

l         551  请求的操做被停止,未知的页类型。

l         552  请求的文件操做被停止,超过了分配的存储单元(对当前目录或数据集而言)。

l         553  请求的操做没法执行,不容许的文件名。

5.  CDUP(Change to Parent Directory,变为父目录)命令

说明:把当前目录改成远程文件系统的根目录,无需改变登陆、账号信息或传输参数。

用法:CDUP<CRLF>

参数:无。

例子:

SendData "CDUP"  + “/r/n

注释:CDUP目录可改成父目录。MS-DOS中的等效命令是cd/。建立这条命令是为了适应FTP的不一样操做系统。

返回值以下(粗体表示成功):

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

6.  CWD(Change Working Directory,改变工做目录)命令

说明:把当前目录改成远程文件系统的指定路径,而无需改变登陆、账号信息或传输参数。

用法:CWD<Path><CRLF>

参数:Path是远程系统上的一个工做目录。

例子:

SendData "CWD/pub/cgvb/uploads"  + “/r/n

返回值以下(粗体表示成功):

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

7.  DELE(Delete,删除)命令

说明:删除服务器站点上在路径名中指定的文件。

用法DELE<FileName><CRLF>

参数:FileName是服务器站点上一个彻底合格的路径和文件名。

例子:

SendData "DELE temp.fil" + “/r/n

注释:若是指望有额外的保护级别(例如选项"确实要删除此文件吗?"),这应该由客户软件提供。

返回值以下(粗体表示成功):

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

8.  HELP(Help,帮助)命令

说明:让服务器经过到客户的控制链接发送有关其实现状态的帮助信息。

用法:HELP[<Topic>]<CRLF>

参数:Topic是一个可选的命令,或是请求哪条命令有关文本的其余参数。

例子:

SendData "HELP" + “/r/n

注释:HELP能够带一个参数(例如任何命令的名称),以在响应中返回更具体的信息。应答为类型211或214。建议在输入USER命令前容许使用HELP命令。服务器可使用这个应答来指定站点相关的参数,例如在对HELP SITE的响应中。

返回值以下(粗体表示成功):

l         211  系统状态,或系统的帮助应答。

l         214  帮助消息。

描述如何使用服务器或某条不经常使用的具体命令的方法。这个应答只对用户有用,由于帮助消息没有标准的格式。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向有命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

9.  LIST(List,列表)命令

说明:让服务器给客户发送一份列表。

用法:LIST[<PathName>]<CRLF>

参数:PathName是服务器系统上的一个有效路径和文件规范。

例子:

SendData "LIST pub/*.*" + “/r/n

注释:若是路径名指定的是一个目录或其余文件组,服务器传送一份位于指定目录中的文件的列表。若是路径名指定的是一个文件,那么服务应该发送此文件的当前信息。空变元则暗指用户的当前工做目录或默认目标。数据将在类型ASCII或类型EBCDIC中经过数据链接传送(用户必须确保ASII或EBCDIC的类型适当)。

由于系统与系统之间的文件信息可能有很大差异,因此这项信息要在程序中自动使用可能很困难,但对用户来讲会颇有用。

返回值以下(粗体表示成功):

l         125  数据链接已打开,传输启动。

l         150  文件状态没问题,准备打开数据链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭,传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         451  请求的操做被停止,处理中发生本地错误。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

10.  MKD(Make Directory ,建立目录)命令

说明:建立一个在路径名中指定的目录(若是是绝对路径名)或当前工做目录的子目录(若是是相对路径名)。

用法:MKD<Path><CRLF>

参数:Path是服务器端上的一个有效路径。

例子:

SendData "MKD /users/johnsmith" + “/r/n

返回值以下(粗体表示成功):

l         257  “PATHNAME”已建立。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

11.  MODE(Transfer Mode,传输模式)命令

说明:指定传输模式。

用法:STRU<Mode><CRLF>

参数:Mode是以下ASCII值的其中之一:

S——Stream(流,默认值)

B——Block(块)

C——Compressed(通过压缩)

例子:

SendData "STRU B" + “/r/n

返回值以下(粗体表示成功):

l         200  命令成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

 

12.  NLST(Name List,名称列表)命令

说明:让服务器给客户发送一份目录列表。

用法:NLST[<PathName>]<CRLF>

参数:PathName是服务器系统上的一个有效路径和文件规范。

例子:

SendData "NLST /pub/cgvB" + “/r/n

注释:路径名应该指定一个目录或其余由系统指定的文件组描述符,空变元则暗指当前目录。服务器将返回一个文件名称的流,除此以外没有其余信息。数据将以ASCII或EBCDIC类型经过数据链接传送,其中的有效路径名字符串由<CRLF>或<NL>分隔(用户必须确保类型正确)。

NLST但愿返回的信息可被程序用来进一步地自动处理这些文件。例如,在一个“断点续传”功能的实现中。

返回值以下(粗体表示成功):

l         125  数据链接已打开,传输启动。

l         150  文件状态正常,准备打开数据链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭,传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         451  请求的操做被停止,处理中发生本地错误。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

13.  NOOP(NOOP,无操做)命令

说明:这是一条不进行操做的命令,即它什么都不作。

用法:NOOP<CRLF>

参数:无。

例子:

SendData "NOOP" + “/r/n

注释:NOOP不会影响任何参数或之前输入的命令。除了让服务器发送一条OK应答外,它不指定任何操做。

返回值以下(粗体表示成功):

l         200  命令成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。

14.  PASS(Password,密码)命令

说明:向远程系统发送用户的密码,该命令在USER命令后使用。

用法:PASS<Password><CRLF>

参数:Password是由USER命令指定的已注册用户密码。

例子:

SendData "PASS mypassworD" + “/r/n

注释:在链接到一台FTP服务器的端口21并接收到一个由代码220打头的行,表示服务器已准备好你向它发USER和PASS命令,以登陆进此FTP服务器以后,紧跟着发送USER命令。

PASS命令应该紧跟着USER命令。

若是你在此FTP服务器上有账号,就能够指定本身的用户名和密码。若是想匿名登陆,能够指定用户名为“Anonymous”,而用本身的电子邮件地址当密码。

返回值以下(粗体表示成功):

l         202  命令尚未被实现,在此站点上是多余的。

l         230  用户已登陆,请继续。

l         332  登陆须要账号(请参看ACCT命令)。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         530  没法登陆。

15.  PASV(Passive,被动的)命令

说明:告诉服务器在一个非标准端口上收听数据链接。

用法:PASV<CRLF>

参数:这条命令请求server-DTP(服务器数据传送规约)“收听”某个数据端口(该端口不是它的默认数据端口),并等待一个链接而不是在收到传输命令时初始化一个链接。对这条命令的响应包括主机地址和此服务器正在收听的端口地址。

例子:

SendData "PASV" + “/r/n

返回值以下(粗体表示成功):

l         227  输入被动模式(h1,h2,h3,h4,p1,p2)。

返回值包括一个在数据链接中使用的数据端口的HOST-PORT规约。此参数是一个32位Internet主机地地址和一个16位TCP端口地的拼接。这个地址信息被拆分为8位的字段,而且每一个字段的值是做为一个十进制数传输的(在字符串意义上)。H1是Internet主机地址的高位字节,p1是端口地址的高位字节。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         503  没法登陆。

16.  PORT(Data  Port,数据端口)命令

说明:为数据链接指定一个IP地址和本地端口。

用法:PORT<Socket><CRLF>

参数:Socket是数据链接中要使用的数据端口的一个HOST-PORT规约。用户和服务器都有默认的数据端口,在正常状况下不须要这条命令和对它的应答。若是使用了这条命令,则参数是一个32个Internet主机地址和一个16位TCP端口地的拼接。这个地址信息被拆分为8位的字段,而且每一个字段的值是做为一个十制数传输的(在字符串意义上)。各个字段用逗号分隔开。一条端口命令能够是这样:

PORT h1,h2,h3,p1,p2

其中H1是Internet主机地址的高位字节,P1是本地端口的高位字节。

例子:

SendData "PORT 199,199,199,0,33,1" + “/r/n

返回值以下(粗体表示成功):

l         200  命令成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         530  没法登陆。

17.  PWD(Print Working Directory,打印工做目录) 命令

说明:在应答中返回当前工做目录的名称。

用法:PWD<CRLF>

参数:无

例子:

SendData "PWD" + “/r/n

返回值以下(粗体表示成功):

l         257  “PATHNAME”已建立

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

18.  QUIT(Logout,注销)命令

说明:终止链接。

用法:QUIT<CRLF>

参数:无。

例子:

SendData "QUTI" + “/r/n

注释:QUIT将终止此USER,若是没有正在进行的文件传送,服务器将关闭控制链接。若是文件传送正在进行,该链接仍然打开直至结果呼响应,而后服务器将其关闭。若是用户进程正在为几个USER传送文件,不想关闭后再逐个从新打开链接,那么应该使用REIN命令代替QUIT。

控制链接的意外关闭会致使服导器采起有效的停止(ABORT)和注销(QUIT)操做。

返回值以下(粗体表示成功):

l         221  服务正在关闭控制链接。

l         500  语法错误,没法识别命令。

19.  REIN(Reinitialize,从新初始化) 命令

说明:终止一个用户。

用法:REIN<CRLF>

参数:无。

例子:

SendData "REIN" + “/r/n

注释:除了容许完成正在进行的传送以外,REIN将刷新全部的I/O和账号信息。全部参数都被复位到默认设置,控制链接仍然打开。这和用户在刚刚打开控制链接时的状态是同样的。若是后来想要登陆,在发送USER命令以前送一条REIN命令。

返回值以下(粗体表示成功):

l         120  服务将在nnn分钟后准备好。

l         220  服务已为新用户准备好。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         502  命令尚未被实现。

20.  REST(Restart,从新启动)命令

说明:标识出文件内的数据点,将从这个点开始继续传送文件。

用法:REST<Marker><CRLF>

参数:Marker表明文件传送将要由此从新启动的服务器标记。

例子:

SendData "REST 244" + “/r/n

注释:REST不会引发文件传送,而只是跳到文件中指定的数据检验点上。RSET后紧跟着适当的FTP服务命令,该命令才会引发文件的继续传送。

返回值以下(粗体表示成功):

l         无响应即表示成功。

l         350  请求的文件操做在等待更进一步的信息。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

21.  RETR(Retrieve,检索)命令

说明:这条命令让服务器给客户传送一份在路径名中指定的文件的副本。这不会影响该文件在服务器站点上的状态和内容。

用法:RETR<FileName><CRLF>

参数:FileName是服务器站点上一个彻底合格的路径和文件名。

例子:

SendData "RETR /pub/cgvb/misc/somefile.zip" + “/r/n

返回值以下(粗体表示成功):

l         110  从新启动标记应答。

在此状况下,文体是精确的,并且不会留给特定的实现处理;它必须读取:

MARK yyyy=mmmm

其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。

l         125  数据链接已打开,传输启动。

l         150  文件状态没问题,准备打开数据链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭,传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如,文件正忙)。

l         451  请求的操做被停止,处理中发生本地错误。

l         500  语法错误,没法识别命令。

这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

22.  RMD(Remove Directory,删除目录)命令

说明:删除一个在路径名中指定的目录(若是是绝对路径名)或当前工做目录的子目录(若是是相对路径名)。

用法:RMD<Path><CRLF>

参数:Path是服务器端上一个彻底合格的路径。

例子:

SeddData "RMD /users/johnsmith" + “/r/n

返回值(粗体表示成功):

l         250  请求的文件操做没问题,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行;文件不可用(例如,找不到文件,无访问权)。

23.  RNFR(Rename From,把…重命名)命令

说明:文件重命名进程的前一半。指定要重命名的文件的旧路径和文件名。

用法:RNFR<FileName><CRLF>

参数:FileName是服务器站点上一个彻底有效的路径和文件名。

例子:

SendData "RNFR source.zip" + “/r/n

RNFR后面必须紧跟着一条指定新路径和文件名的"Rename to"命令(RNTO)。

返回值以下(粗体表示成功):

l         无响应即表示成功

l         350  请求的文件操做在等待更进一步的信息。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

24.  RNTO(Rename TO,重命名为)命令

说明:文件重命名进程的后一半。指定要重命名的文件的新路径和文件名。

用法:RNTO<FileName><CRLF>

参数:FileName是服务器站点上的一个有效文件名。

例子:

SendData "RNTO destination.ziP" + “/r/n

注释:RNTO前面必须是一条"Rename from"命令(RNFR)。RNER和RNTO合在一块儿才能重命名服务器上的一个文件。

返回值以下(粗体表示成功):

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         503  命令的顺序不对。

l         530  没法登陆。

l         532  文件的存储须要账号。

l         553  请求的操做没法执行,不容许的文件名。

25.  SITE(Site Parameters,站点参数)命令

说明:服务器使用SITE提供了某些服务特性,这些服务特性在系统中对文件传达而言是必要的,但又不是足够通用的能够包括到协议中做为命令的那些服务特性。这些服务的本质和他们的语法规范能够陈述在对HELPSITE命令的应答中。

用法:SITE<String><CRLF>

参数:String能够是任何串参数。

例子:

SendData "SITE chmod 646 mylifle.ziP" + “/r/n

注释:举例来讲,使用以下语法,你就可使用SITE来改变一个文件的权限属性。

SITE CHMOD<Attribute><Filename>

返回值以下(粗体表示成功):

l         200  命令成功。

l         202  命令尚未被实现,在此站点上是多余的。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变无中有语法错误。

l         530  没法登陆。

26.  SMNT(Structure Mount,结构装配)命令

说明:容许用户装配另外一个文件系统的数据结构而无需改变登陆、账号信息或传输参数。

用法:SMNT<Path><CRLF>

参数:Path是另外一个文件数据系统的路径。

例子:

SendData "SMNT/users/johnsmith"&vbCrlf

返回值以下(粗体表示成功):

l         202  命令尚未被实现,在此站点上是多余的。

l         250  请求的文件操做没问题,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

27.  STAT(Status,状态)命令

说明:使一个状态响应以应答的形式经过控制链接发送出去

用法:STAT[<PathName>]<CRLF>

参数:PathName是服务器上的一个有效路径。

例子:

SendData "STAT /users/johnsmith/mylilE" + “/r/n

注释:STAT能够在文件传输(连同Telnet  IP和Synch信号一块儿——请参看RFC959的FTP Commands部分)期间发送,在此状况下服务器将响应操做中的进程状态,或者在两次文件传输之间发送。在后一种状况下,这条命令能够带一参数字段。若是指定了一个完整的路径名,STAT将相似于LIST命令,除了它的数据是经过控制链接传送的以外。若是指定的是一个局部路径,服务器将在响应中给出一份与指定项相关联的文件名或属性列表。若是不指定参数,服务器将返回有关此服务器FTP进程的常规状态信息,这其中包括当前全部传输参数的值和链接状态。

返回值以下(粗体表示成功):

l         211  系统状态,或系统的帮助应答。

l         212  目录状态。

l         213  文件状态。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         500  语法错误,没法识命令。这其中包括包令行过长类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

l         530  没法登陆。

28.  STOR(Store,保存)命令

说明:让服务器接收一个来自数据链接的文件。

用法:STOR<FileName><CRLF>

参数:FileName是服务器站点上一个彻底合格的路径和文件名。

例子:

SendData "STOR newfile.zip" + “/r/n

注释:Store命令让服务器接收经过数据链接传输而来的数据,并把数据存为务器站点上的文件。若是在路径名中指定的文件已经在服务站点上存在,则此文件的内容将被传输过来的数据所替代。若是在路径名中指定的文件还没有存在,将建立一个新文件。

返回值以下(值体表示成功):

l         110  从新启动标记应答

在此状况下,文本是精确的,并且不会留给特殊的实现处理,它必须读取:

MARK yyyy=mmmm

其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应相标记(请注意标记和“=”之间的空格)。

l         125  数据链接已打开,传输启动。

l         150  文件状态一切正常,准备打开数据链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做正常进行,已完成。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭,传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)

l         451  请求的操做被停止,处理中发生本地错误。

l         452  请求的操做没法执行,系统的存储空间不足。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

l         532  文件的存储须要账号。

l         550  请求的操做没法执行,文件不可用(例如找不到文件,无访问权)。

l         551  请求的操做被停止,未知的页类型。

l         552  请求的文件操做被子停止,超过了分配的存储单元(对当前目录或数据集而言)。

l         553  请求的操做没法执行,不容许的文件名。

29.  STOU(Store Unique,存为惟一)命令

说明:让服务器准备接收一个文件,并指示服务器把这个文件用惟一的名称保存到目的目录中。

用法:STOU<CRLF>

参数:无。

例子:

SendData "STOU"&vbCrlf

注释:Store Unique命令和STOR所作的工做是基本同样的,只是前者在当前目录下生成的文件是以一个该目录中惟一的名称来建立的。250 Transfer Started响应中必须包括这个生成的名称。

返回值以下(粗体表示成功):

l         110  从新启动标记应答

在此状况下,文本是精确的,并且不会留给特殊的实现处理,它必须读取:

MARKyyyy=mmmm

其中yyyy是用户进程的数据流标记,mmmm是服务器上的相应标记(请注意标记和“=”之间的空格)。

l         125  数据链接已打开,传输启动。

l         150  文件状态正常,准备打开数据链接。

l         226  关闭数据链接,请求的文件操做已成功。

l         250  请求的文件操做没问题,已完成(该行中包括一个惟一的文件名)。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答。

l         425  没法打开数据链接。

l         426  链接关闭,传输停止。

l         450  请求的文件操做没法执行,文件不可用(例如文件正忙)。

l         451  请求的操做被停止,处理中发生本地错误。

l         452  请求的操做没法执行,系统的存储空间不足。

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

l         532  文件的存储须要账号。

l         550  请求的操做没法执行,文件不可(例如找不到文件,无访问权)。

l         551  请求的操做做被停止,未知的页类型。

l         552  请求的文件操做被停止,超过了分配的存储单元(对当前目录或数据集而言)。

l         553请求的操做没法执行,存在不容许的文件名。

30.  STRU(File Structure,文件结构)命令

说明:指定传达数据的结构类型。

用法:STRU<Structure Type><CRLF>

参数:StructureType是以下ASCII字符的其中之一:

F——文件结构(默认值)

R——记录结构

P——页结构

有关使用非文件结构的信息请参看RFC959。

例子:

SendData "STRUR" + “/r/n

返回值以下(粗体表示成功):

l         200  命令成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

31.  SYST(System,系统)命令

说明:SYST用于查明服务器上操做系统的类型。

用法SYST<CRLF>

例子:

SendData "SYST" + “/r/n

注释:按照推测,应答中的第一个单词是在Assigned Numbers文档[4]的当前版本中列出的某一个系统名称。可是,并不必定都能成功,新的系统每时每刻都在涌现。而公开的文档也许能跟上趟,也许不能。

返回值以下(粗体表示成功):

l                   215   NAME系统类型。NAME是来自Assigned Numbers文档中的一个正式的系统名称。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         502  命令尚未被实现。

32.  TYPE(Representation Type,表达类型)命令

说明:肯定数据的传输方式。

用法:TYPE<Data Type Code><CRLF>

参数:Data type Code是一个(或几个)ASCII字符,它标识出一种数据表达类型。

例子:

‘—设置二进制模式

SendData "type I" + “/r/n

注释:最典型的状况就是使用TYPE命令在ASCII或二进制模式(Image,图像)之间切换。发送和接收任何类型的文件时均可以使用图像类型。ASCII类型只在传送文本时使用。

有几种类型要用到第二个参数。第一个参数由一个单独的ASCII字符表示,ASCII和EBCDIC的第二个Format参数也是如此;本地字节的第二个参数则是一个表示Byte大小的十进制整数。两个参数之间用<SP>(Space,即空格,ASCII代码为32)分隔开。

给类型分配以下代码:

A——ASCII*

E——EBCDIC*

I——Image(图像,传送二进制文件时用它)。

L<byte size>——Local byte  Byte size(本地字节,字节大小)

-------------------------------------

*——A和E类型的第二个Parameter要用到以下三个的其中一个:

N——Nonprint(非打印)

T——Telnet format effector(Telnet格式控制符)

C——Carriage Control(ASA)托架控制(美国国家标准)。

默认的表达类型是ASCII Nonprint。若是Format参数发生改变,后来只是第一个参数发生了改变,Format将随即返回到默认的Nonprint。

返回值以下(粗体表示成功):

l         200  命令成功。

l         421  服务不可用,关闭控制链接。

若是某项服务获知本身即将关闭,会向全部命令作出这个应答

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         504  命令中尚未实现该参数。

l         530  没法登陆。

命令:USER(User Name,用户名称)

说明:指定远程系统上的用户名称。和PASS命令一块儿使用来登陆。

用法:USER<User><CRLF>

参数:UserName是FTP系统上已经注册的用户名称。

例子:

 

SendData "USER johns" + “/r/n

 

注释:在链接到一台FTP服务器的端口并接收到一个由代码220开头的行,表示服务器已经准备好用户向它发送USER和PASS命令以登陆进此FTP服务器以后,紧跟着发送USER命令。

PASS命令应该紧跟着USER命令。

若是在此FTP服务器上有账号,就能够指定本身的用户名和密码。若是想匿名登陆,能够指定用户名为“Anonymous”,而用本身的电子邮件地址当密码。

在会话期间,能够随时发送USER和PASS命令,把控制权交给一个新用户。

返回值以下(粗体表示成功)

l         230  用户已经登陆。

l         331  用户名正常,须要密码。

l         332  登陆须要账号。

l         421  服务不可用,关闭控制链接

若是某项服务获知本身即将关闭,会向全部命令作出这个应答

l         500  语法错误,没法识别命令。这其中包括命令行过长之类的错误。

l         501  参数或变元中有语法错误。

l         530  没法登陆。

以上为大部分的FTP命令,若是想进行FTP高级编程,就必须掌握这些具体的FTP命令


转载: http://blog.csdn.net/code09/article/details/3975223