資源簡介
實現(xiàn)FTP的一些功能,如上傳文件,下載文件,顯示目錄,改變目錄,退出等功能
代碼片段和文件信息
import?java.io.BufferedInputStream;
import?java.io.BufferedOutputStream;
import?java.io.BufferedReader;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.net.Socket;
import?java.net.UnknownHostException;
public?class?client?{
????String?cmd?=?““;//從標準輸入流接收字符串,放在cmd中
Socket?s;//
BufferedReader?br;//傳輸數(shù)據(jù)
DataOutputStream?dos;//
DataInputStream?dis;
public?client?(String?serName){
try?{
boolean?flag?=?true;
while(flag){
s?=?new?Socket(serName?8888);
//從標準IO中獲得輸入的命令
System.out.println(“連接上!!“);
?br?=?new?BufferedReader(new?InputStreamReader(System.in));//將輸入的命令放到BufferedReader類變量br中
// if?((cmd?=?br.readLine())!=?null&&cmd.length()!=0)
// System.out.println(“echo:“+cmd);
cmd?=?br.readLine();//將br的內(nèi)容讀出放到cmd中
//發(fā)送命令
DataOutputStream?dos?=?new?DataOutputStream(
new?BufferedOutputStream(s.getOutputStream()));//向服務器發(fā)送相關命令如getputcddir
//將字符集轉(zhuǎn)換成字節(jié)序列
byte?[]buf?=?cmd.getBytes();//使用平臺默認的字符集將此?String?解碼為字節(jié)序列,并將結(jié)果存儲到一個新的字節(jié)數(shù)組中。?
//返回:結(jié)果字節(jié)數(shù)組
// dos.write(buf);
dos.writeUTF(cmd);//用UTF編碼將一個字符串寫入基礎輸入流,即寫到服務端的輸入流
dos.flush();//清空此數(shù)據(jù)輸出流
dos.close();//關閉輸出流
s.close();//關閉socket
System.out.println(“chu“);
//進行對于應得操作:
if(cmd.equals(“get“))
get(serName);
else?if(cmd.equals(“put“))
put(serName);
else?if(cmd.equals(“cd“))
cd?(serName);
else?if(cmd.equals(“dir“))
dir(serName);
else?if(cmd?==?“quit“)
flag?=?false;
}
}?catch?(UnknownHostException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}?catch?(IOException?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}finally?{
???? /*if(dis?!=?null){
???? try?{
dis.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
???? }
???? if(dos?!=?null){
???? try?{
dos.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
???? }*/
if(br?!=?null){
try?{
br.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
???? if(s?!=?null){
???? try?{
s.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
???? }
????
???? }
}
public?void?get(String?serName){
//下載
System.out.println(“get“+“54512“);
System.out.println(“請輸入目錄:“);
try{
//建立連接:從標準輸入中獲得要下載的文件的路徑放在br
Socket?s?=?new?Socket(serName8888);
br?=?new?BufferedReader(new?InputStreamReader(System.in));
????String?downFile?=?br.readLine();//讀取一個文本行。通過下列字符之一即可認為某行已終止:
????????????????????????????????????//換行?(‘\n‘)、回車?(‘\r‘)?或回車后直接跟著換行。
????//返回:
????//包含該行內(nèi)容的字符串,不包含任何行終止符,如果已到達流末尾,則返回?null?
????//發(fā)要下載的文件給服務器好讓對方接收到要下載的文件的名字
????dos?=?new?DataOutputStream(
new?BufferedOu
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????232??2009-12-30?14:42??ftpftp\.classpath
?????文件????????382??2009-12-30?14:42??ftpftp\.project
?????文件???????6556??2009-12-31?11:07??ftpftp\bin\client.class
?????文件???????5970??2009-12-31?11:15??ftpftp\bin\server.class
?????文件???????8013??2009-12-31?11:07??ftpftp\src\client.java
?????文件???????7531??2009-12-31?11:15??ftpftp\src\server.java
?????目錄??????????0??2010-01-01?17:16??ftpftp\bin
?????目錄??????????0??2010-01-01?17:16??ftpftp\src
?????目錄??????????0??2010-01-01?17:16??ftpftp
-----------?---------??----------?-----??----
????????????????28684????????????????????9
評論
共有 條評論