FTP协议(指令集)

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

1.  ABOT(Abort,中止)命令

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

用法:ABOR﹝CRLF﹞

参数:无。

例子:

SendData "ABOR" + “/r/n”

注释:中止命命令可以请求“特殊操作”以强行引起服务器的重视(详情请参看RFC959)。如果上一次命令已经完成(包括数据传输),就不会导致任何操作。服务器不会关闭控制连接,但必须关闭数据连接。

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

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

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

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命令。

你可能感兴趣的:(FTP协议(指令集))