FTP 命令
FTP 的主要操作都是基於各種命令基礎之上的
· 設置傳輸模式
· 目錄操作
· 連接操作
· 發送操作
· 獲取操作
編程思路
根據FTP 的工作原理
編程技巧說明
在主函數中
具體的代碼如下
public class ftpServer extends Thread{
private Socket socketClient;
private int counter;
private static String initDir;
public static void main(String[] args){
if(args
initDir = args[
}else{ initDir =
int i =
try{
System
//監聽
ServerSocket s = new ServerSocket(
for(;;){
//接受客戶端請求
Socket incoming = s
//創建服務線程
new ftpServer(incoming
i++;
}
}catch(Exception e){}
}
線程類的主要設計都是在run()方法中實現
(
· user name(user) 和 password (pass) 命令處理代碼如下
if(str
user = str
user = user
out
}
if(str
out
User 命令和 Password 命令分別用來提交客戶端用戶輸入的用戶名和口令
· CWD (CHANGE WORKING DIRECTORY) 命令處理代碼如下
if(str
String str
dir = dir+
out
}
該命令改變工作目錄到用戶指定的目錄
· CDUP (CHANGE TO PARENT DIRECTORY) 命令處理代碼如下
if(str
int n = dir
dir = dir
out
}
該命令改變當前目錄為上一層目錄
· QUIT命令處理代碼如下
if(str
out
done = true;
}
該命令退出及關閉與服務器的連接
(
· Port命令處理代碼如下
if(str
out
int i = str
int j = str
int k = str
String str
str
str
for(int l=k+
}
for(int l=j+
str
}
tempPort = Integer
}
使用該命令時
· TYPE命令處理代碼如下
if(str
out
}
TYPE 命令用來完成類型設置
(
· RETR (RETEIEVE) 和 STORE (STORE)命令處理的代碼
if(str
out
str = str
str = str
RandomAccessFile outFile = new
RandomAccessFile(dir+
Socket tempSocket = new Socket(host
OutputStream outSocket = tempSocket
byte byteBuffer[]= new byte[
int amount;
try{
while((amount = outFile
outSocket
}
outSocket
out
outFile
tempSocket
}
catch(IOException e){}
}
if(str
out
str = str
str = str
RandomAccessFile inFile = new
RandomAccessFile(dir+
Socket tempSocket = new Socket(host
InputStream inSocket = tempSocket
byte byteBuffer[] = new byte[
int amount;
try{
while((amount =inSocket
inFile
}
inSocket
out
inFile
tempSocket
}
catch(IOException e){}
}
文件傳輸命令包括從服務器中獲得文件RETR和向服務器中發送文件STOR
STOR 命令的處理也是同樣的過程
· DELE (DELETE)命令處理代碼如下
if(str
str = str
str = str
File file = new File(dir
boolean del = file
out
}
DELE 命令用於刪除服務器上的指定文件
· LIST命令處理代碼如下
if(str
try{
out
Socket tempSocket = new Socket(host
PrintWriter out
File file = new File(dir);
String[] dirStructure = new String[
dirStructure= file
String strType=
for(int i=
else
{strType =
out
}
tempSocket
out
}
catch(IOException e){}
LIST 命令用於向客戶端返回服務器中工作目錄下的目錄結構
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19211.html