?? server-1.txt
字號:
Ftp服務是最常用的網絡服務之一,雖然在www風行的今天,Ftp已經遠不如以前使用得廣泛,但是在許多大學等科研單位,Ftp仍然是最常用的文件交換方式。
構建一個Ftp服務器要比構建一個Ftp客戶端來得簡單,因為服務器不需要復雜的圖形界面。相比傳統的C/C++,使用Java的多線程和網絡編程能令我們更輕易地開發出穩定可靠的Ftp服務器。
Ftp協議簡介
File Transfer Protocol,文件傳輸協議,顧名思義,Ftp就是用于文件的傳輸,Ftp協議是基于TCP協議的,因此,在一個Ftp會話開始前,客戶端和服務器必須首先建立一個 TCP連接,這個TCP連接通常被稱作控制連接,客戶端通過此連接向服務器發送FTP命令,服務器處理命令后,將返回一個響應碼。
每個命令必須有最少一個響應,如果是多個,要易于區別。FTP響應由三個數字構成,后面是一些文本。數字帶有足夠的信息,客戶端程序不用知道后面的文本就知道發生了什么。文本信息與服務器相關,不同的用戶,不同的服務器可能有不同的文本信息。文本和數字以空格間隔,文本后以換行符(\n)結束。如果文本多于一行,第一行內要有信息表示這是多行文本,最后一行也要標記為結束行。比如客戶端發送獲取當前目錄的命令“PWD”,服務器的響應可能是:
200 /pub/incoming
響應碼的三位數字都有明確的含義:
* 1xx 確定預備應答,這類響應用于說明命令被接受,但請求的操作正在被初始化,在進入下一個命令前等待另外的應答。
* 2xx 確定完成應答,要求的操作已經完成,可以執行新命令。
* 3xx 確定中間應答,命令已接受,但要求的操作被停止。
* 4xx 暫時拒絕完成應答,未接受命令,但錯誤是臨時的,過一會兒可以再次發送消息,比如服務器忙。
* 5yz 永遠拒絕完成應答,此類響應碼一般表示錯誤,如拒絕登陸。
第二位數字代表的意義:
* x0x 格式錯誤;
* x1x 此類應答是為了請求信息的;
* x2x 此類應答是關于控制和數據連接的;
* x3x 關于認證和帳戶登錄過程;
* x4x 未使用;
* x5x 此類應答是關于文件系統的;
常見的相應有:
* 200 命令執行成功;
* 202 命令未實現;
* 230 用戶登錄;
* 331 用戶名正確,需要口令;
* 450 請求的文件操作未執行;
* 500 命令不可識別
* 502 命令未實現
一個Ftp會話過程中,始終有一個控制連接,如果客戶端請求文件,則會有一個數據連接,但FTP協議規定:只要關閉了控制連接,數據連接(如果有)也必須關閉。
不同的FTP服務器對FTP命令的支持程度可能不同,但是TCP標準定義了所有FTP服務器都必須實現的命令,我們的目標就是構建一個實現這個最小命令集的FTP服務器。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -