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 服務不可用,關閉控制串連。
如果某項服務獲知自己即將被關閉,會向所有命令做出這個應答。