




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第14章FTP服務(wù)器FTP(FileTransferProtocol文件傳輸協(xié)議)是Internet上用來傳送文件的協(xié)議。在Internet上通過FTP服務(wù)器可以進行文件的上傳(Upload)或下載(Download)。FTP是實時聯(lián)機服務(wù),在使用它之前必須是具有該服務(wù)的一個用戶(用戶名和口令),工作時客戶端必須先登錄到作為服務(wù)器一方的計算機上,用戶登錄后可以進行文件搜索和文件傳送等有關(guān)操作,如改變當前工作目錄、列文件目錄、設(shè)置傳輸參數(shù)及傳送文件等。使用FTP可以傳送所有類型的文件,如文本文件、二進制可執(zhí)行文件、圖象文件、聲音文件和數(shù)據(jù)壓縮文件等。NetworkProgrammingAnIntroductiontoDatabaseSystem第14章FTP服務(wù)器FTP(FileTransferP14.1FTP工作原理
FTP采用C/S(客戶端/服務(wù)器)模式進行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。用戶從頭到尾都只需使用這個端口。但是FTP通信除了有一個默認端口21主要進行控制連接,進行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務(wù)器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務(wù)器端需要提供給客戶端一個IP地址和一個非標準端口。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP采用C/S(客戶端/服務(wù)器14.1FTP工作原理
FTP(FileTransferProtocol是文件傳輸協(xié)議的簡稱。用于工nternet上的控制文件的雙向傳輸。同時,它也是一個應(yīng)用程序。用戶可以通過它把自己機器與世界各地所有運行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的資源和信息。當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務(wù)器程序,它響應(yīng)請求把你指定的文件傳送到你的計算機中。FTP采用“客戶端/服務(wù)器”方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP(FileTrans14.1FTP工作原理
從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計算機之間按照TCP/工P協(xié)議來傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器(Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權(quán),即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Email地址作為口令,以便更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理從根本上說,F(xiàn)TP協(xié)議就是在14.1FTP工作原理FTP工作模式上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進程。服務(wù)器PI向用戶PI返回標準應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數(shù)據(jù)端口上偵聽。這個數(shù)據(jù)連接是全雙工的。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP工作模式NetworkPr14.1FTP工作原理FTP工作模式NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP工作模式NetworkPr14.1FTP工作原理FTP傳輸模式FTP協(xié)議的任務(wù)是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺計算機通過ftp協(xié)議對話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數(shù)據(jù)傳輸模式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP傳輸模式NetworkPr14.2ftpclient類
在J2SE中提供了與客戶端編程有關(guān)的Api,它就是.ftp.FtpClient類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關(guān)指令與實現(xiàn)細節(jié),提供了一系列的方法,這些方法涵蓋了幾乎所有ftp的功能使用FtpClient類設(shè)計FTP客戶端程序可以讓編程人員輕松地實現(xiàn)登錄遠程FTP服務(wù)器、瀏覽服務(wù)器上的目錄、設(shè)置傳輸協(xié)議、上傳文件和下載文件等功能。FtpClient類的構(gòu)造方法和主要方法如下:NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類在J2SE中提供了與客戶端編14.2ftpclient類1.PublicFtpClient(Stringhostname)此構(gòu)造函數(shù)利用給出的主機名建立一條FTP連接,使用默認端口號2.PublicvoidopenServer(Stringhostname)這個方法用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認端口號。3.Publicvoidlogin(Stringusername,Stringpassword)此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Intemet的用戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。4.Publicvoidbinary():該命令可把傳輸格式設(shè)置為二進制格式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類1.PublicFtpCl14.2ftpclient類在JAVA中利用ftpclient類實現(xiàn)FTP服務(wù)器文件的上傳,下載,刪除功能。程序代碼見WORD附件NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類在JAVA中利用ftpcl14.3FTP命令大多數(shù)Internet服務(wù)一樣,F(xiàn)TP也是一個客戶機/服務(wù)器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機程序,連接到在遠程主機上的FTP服務(wù)器程序。用戶通過客戶機程序向服務(wù)器程序發(fā)出FTP命令,服務(wù)器程序執(zhí)行用戶所發(fā)出的FTP命令,并將執(zhí)行的結(jié)果返回到客戶機。FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS、Windows的命令行、LINUX、UNⅨ操作系統(tǒng)下都可以使用FTP,都會遇到大量的FTP內(nèi)部命令,熟悉并靈活應(yīng)用FTP命令,可以大大方便使用者,并收到事半功倍之效。(注:只要安裝了TCP/IP協(xié)議的機器就能使用ftp命令。ftp命令對大小寫是敏感的。)NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令大多數(shù)Internet服務(wù)一樣,F(xiàn)TP14.3FTP命令
命令格式:ftp[-v][-d][-i][-n][-g][-s:filename][-w:windowsize][computer]-v不顯示遠程服務(wù)器響應(yīng)-n禁止第一次連接的時候自動登陸-i在多個文件傳輸期間關(guān)閉交互提示-d允許調(diào)試、顯示客戶機和服務(wù)器之間傳遞的全部ftp命令-g不允許使用文件名通配符,文件名通配符的意思是說允許在本地文件以及路徑名中使用通配字符-s:filename指定包含ftp命令的文本文件。在ftp命令啟動后將自動運行這些命令。在加的參數(shù)里不能有空格。-w:windowsize忽略默認的4096傳輸緩沖區(qū)computer指定要連接的遠程計算機的ip地址NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令命令格式:ftp[-v][-d][14.3FTP命令FTP的主要操作都是基于各種命令基礎(chǔ)之上的。常用的命令有:◆設(shè)置傳輸模式,它包括ASCⅡ(文本)和BINARY二進制模式;◆目錄操作,改變或顯示遠程計算機的當前目錄(cd、dir/ls命令);◆連接操作,open命令用于建立同遠程計算機的連接;close命令用于關(guān)閉連接;◆發(fā)送操作,put命令用于傳送文件到遠程計算機;mput命令用于傳送多個文件到遠程計算機;◆獲取操作,get命令用于接收一個文件;mget命令用于接收多個文件。
NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令FTP的主要操作都是基于各種命令基14.3FTP命令基礎(chǔ)命令
1、ASC(ASCll)、bin(BINARY)、IMAGE、TYPEASCⅡ切換傳輸模式為文字模式(只能用來傳送DOC文件);BINARY切換傳輸模式為二進制模式(除文字文件外皆用此模式);IMAGE相當于BINARYTYPE讓你更改或顯示傳輸模式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令基礎(chǔ)命令NetworkProgra14.3FTP命令2、CD、CDUP、LCD、P~WD、!CD改變當前工作目錄,例如:CD\PUB;CDUP回到上一層目錄,相當于你打CD..:LCD讓你更改或顯示LOCAL端的工作目錄,例如:LCD\TMP;PWD顯示工作目錄(REMOTE端):NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令2、CD、CDUP、LCD、P~WD、14.3FTP命令3、OPEN、username(user)和password(pass)命令User命令和Password命令分別用來提交客戶端用戶輸入的用戶名和口令。OPEN:連接到指定ftp服務(wù)器上,如opencomputerport其中computer一般是遠程計算機的ip地址,port不用說就是指定端口了username:張三password:123456NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令3、OPEN、username(14.3FTP命令4、GET、MGET、PUT、MPUT、RECV、SEND、GET下傳文件;說明:把遠程的文件拷貝到本地計算機上。如getremote-filelocal-fileremote-file是指定要復(fù)制的文件,local-file是指定本地計算機上的文件名,沒有指定的話則與remote-file同名。MGET批量下傳文件,說明:將多個遠程文件復(fù)制到本地計算機.例如:MGET*.GZ;PUT上傳文件;說明:將本地文件復(fù)制到遠程計算機中,如putlocal-fileremote-file其中l(wèi)ocal-file是指定要復(fù)制的本地文件,remote-file是指定要復(fù)制的遠程計算機上的文件名,不指定的話是和本地計算機上的文件名同名.MPUT批量上傳文件,說明:將本地文件復(fù)制到遠程計算機.如mputlocal-files...RECV相當于GET(RECV為RECEIVE的簡寫):SEND相當于PUT。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令4、GET、MGET、PUT、MPUT14.3FTP命令5、LS、DIR、MLS、MDIR、MKDIR、RMDIRLS顯示遠程目錄的文件和子目錄.如lsremote-directorylocal-file其中remote-directory是指要查看的列表的目錄,不指定的話顯示的是當前工作目錄。local-file是指定要保存列表的本地文件.不指定的話是在屏幕上輸出.DIR:相當于LS。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令5、LS、DIR、MLS、MDIR、M14.3FTP命令mls列多個遠程目錄的內(nèi)容MDIR相當于MLS;MKDIR像DOS下的MD(創(chuàng)建子目錄)一樣:RMDIR像DOS下的RD(刪除子目錄)一樣。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令mls列多個遠程目錄的內(nèi)容Netw14.3FTP命令舉例說明ftp的命令行格式:(1)桌面--開始--運行輸入:ftp成功顯示:220ProFTPD12.4Server(ProFTPD)[ip地址]username:張三成功顯示:331Passwordrequiredfor用戶名password:123456成功顯示:230User用戶名loggedin進入ftp運行環(huán)境在ms-dos方式下的ftp>NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令舉例說明ftp的命令行格式:Netwo14.3FTP命令(2)ftp使用的內(nèi)部命令cd:進入遠程主機目錄,改變到指定的目錄例如:ftp>cd..退向根目錄(cd后有空格)ftp>cdpath進目錄(目錄名為path)get:將遠程主機的文件傳至本地硬盤,“下傳”一個文件。例如:ftp>get1.htmd:\ggg\2.htm下傳文件一個文件。說明:遠程主機當前目錄的1.htm文件,復(fù)制到本地d盤的ggg目錄中,并且文件名改為2.htmNetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令(2)ftp使用的內(nèi)部命令Networ14.4服務(wù)器程序設(shè)計1、服務(wù)器主函數(shù)設(shè)計編程思路根據(jù)FTP的工作原理,在主函數(shù)中建立一個服務(wù)器套接字端口,等待客戶端請求,一旦客戶端請求被接受,服務(wù)器程序就建立一個服務(wù)器分線程,處理客戶端的命令。如果客戶端需要和服務(wù)器端進行文件的傳輸,則建立一個新的套接字連接來完成文件的操作。NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計1、服務(wù)器主函數(shù)設(shè)計Netwo14.4服務(wù)器程序設(shè)計publicclassftpServerextendsThread{privateSocketsocketClient;privateintcounter;privatestaticStringinitDir;publicstaticvoidmain(String[]args){if(args.length!=0){initDir=args[0];}else{initDir="c:";}inti=1;NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計publicclassftpS14.4服務(wù)器程序設(shè)計try{System.out.println(“ftpserverstarted!”);//監(jiān)聽21號端口
ServerSockets=newServerSocket(21);for(;;){
//接受客戶端請求
Socketincoming=s.accept();//創(chuàng)建服務(wù)線程
newftpServer(incoming,i).start();i++;}}catch(Exceptione){}}線程類的主要設(shè)計都是在run()方法中實現(xiàn)。用run()方法得到客戶端的套接字信息,根據(jù)套接字得到輸入流和輸出流,向客戶端發(fā)送歡迎信息NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計try{System.out.p14.4服務(wù)器程序設(shè)計2、FTP命令的處理(1)訪問控制命令◆username(user)和password(pass)命令User命令和Password命令分別用來提交客戶端用戶輸入的用戶名和口令。處理代碼如下:if(str.startsWith("USER")){user=str.substring(4);user=user.trim();out.println("331Password");}if(str.startsWith("PASS"))out.println("230User"+user+"loggedin.");NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計2、FTP命令的處理Netw14.4服務(wù)器程序設(shè)計◆CWD(CHANGEWORKINGDIRECTORY)命令該命令改變工作目錄到用戶指定的目錄。處理代碼如下:if(str.startsWith("CWD")){Stringstr1=str.substring(3);dir=dir+"/"+str1.trim();out.println("250CWDcommandsuccesful");}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆CWD(CHANGEWOR14.4服務(wù)器程序設(shè)計◆CDUP(CHANGETOPARENTDIRECTORY)改變當前目錄為上一層目錄,命令處理代碼如下:if(str.startsWith("CDUP")){intn=dir.lastIndexOf("/");dir=dir.substring(0,n);out.println("250CWDcommandsuccesful");}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆CDUP(CHANGETO14.4服務(wù)器程序設(shè)計◆QUIT:該命令退出及關(guān)閉與服務(wù)器的連接,輸出GOODBYE。命令處理代碼如下:if(str.startsWith("QUIT")){out.println("GOODBYE");done=true;}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆QUIT:該命令退出及關(guān)閉與服14.4服務(wù)器程序設(shè)計(2)傳輸參數(shù)命令◆Port:使用該命令時,客戶端必須發(fā)送客戶端用于接收數(shù)據(jù)的32位IP地址和16位的TCP端口號。這些信息以8位為一組,使用十進制傳輸,中間用逗號隔開。命令處理代碼如下:if(str.startsWith("PORT")){out.println("200PORTcommandsuccessful");inti=str.length()-1;intj=str.lastIndexOf(",");intk=str.lastIndexOf(",",j-1);Stringstr1,str2;str1="";str2="";NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計(2)傳輸參數(shù)命令Networ14.4服務(wù)器程序設(shè)計for(intl=k+1;lstr1=str2+str.charAt(l);
}
for(intl=j+1;l<=i;l++){str2=str2+str.charAt(l);}tempPort=Integer.parseInt(str1)*16*16+Integer.parseInt(str2);}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計for(intl=k+1;lst14.4服務(wù)器程序設(shè)計◆TYPE命令用來完成類型設(shè)置,處理代碼如下:if(str.startsWith("TYPE")){
out.println("200typeset");
}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆TYPE命令用來完成類型設(shè)置,14.4服務(wù)器程序設(shè)計(3)FTP服務(wù)命令◆RETR(RETEIEVE)和STORE(STORE)文件傳輸命令包括從服務(wù)器中獲得文件RETR和向服務(wù)器中發(fā)送文件STOR,這兩個命令的處理非常類似。處理RETR命令時,首先得到用戶要獲得的文件的名稱,根據(jù)名稱創(chuàng)建一個文件輸入流,然后和客戶端建立臨時套接字連接,并得到一個輸出流。隨后,將文件輸入流中的數(shù)據(jù)讀出并借助于套接字輸出流發(fā)送到客戶端,傳輸完畢以后,關(guān)閉流和臨時套接字。STOR命令的處理也是同樣的過程,只是方向正好相反。NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計(3)FTP服務(wù)命令Netwo14.4服務(wù)器程序設(shè)計命令處理的代碼if(str.startsWith("RETR")){
out.println("150Binarydataconnection");
str=str.substring(4);
str=str.trim();
RandomAccessFileoutFile=new
RandomAccessFile(dir+"/"+str,"r");
SockettempSocket=newSocket(host,tempPort);
OutputStreamoutSocket=tempSocket.getOutputStream();
bytebyteBuffer[]=newbyte[1024];
intamount;
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計命令處理的代碼NetworkPr14.4服務(wù)器程序設(shè)計try{
while((amount=outFile.read(byteBuffer))!=-1){outSocket.write(byteBuffer,0,amount);
}
outSocket.close();
out.println("226transfercomplete");
outFile.close();
tempSocket.close();
}
catch(IOExceptione){}
}
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計try{
while((amou14.4服務(wù)器程序設(shè)計if(str.startsWith("STOR")){
out.println("150Binarydataconnection");
str=str.substring(4);
str=str.trim();
RandomAccessFileinFile=new
RandomAccessFile(dir+"/"+str,"rw");
SockettempSocket=newSocket(host,tempPort);
InputStreaminSocket=tempSocket.getInputStream();
bytebyteBuffer[]=newbyte[1024];
intamount;
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計if(str.startsWith14.4服務(wù)器程序設(shè)計try{
while((amount=inSocket.read(byteBuffer))!=-1){
inFile.write(byteBuffer,0,amount);
}
inSocket.close();
out.println("226transfercomplete");
inFile.close();
tempSocket.close();
}
catch(IOExceptione){}
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計try{
while((amo14.4服務(wù)器程序設(shè)計◆DELE(DELETE)命令用于刪除服務(wù)器上的指定文件,命令處理代碼如下:if(str.startsWith("DELE")){
str=str.substring(4);
str=str.trim();
Filefile=newFile(dir,str);
booleandel=file.delete();
out.println("250deletecommandsuccessful");
}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆DELE(DELETE)命令用14.4服務(wù)器程序設(shè)計◆LIST命令用于向客戶端返回服務(wù)器中工作目錄下的目錄結(jié)構(gòu),包括文件和目錄的列表。處理這個命令時,先創(chuàng)建一個臨時的套接字向客戶端發(fā)送目錄信息。這個套接字的目的端口號缺省為1,然后為當前工作目錄創(chuàng)建File對象,利用該對象的list()方法得到一個包含該目錄下所有文件和子目錄名稱的字符串數(shù)組,然后根據(jù)名稱中是否含有文件名中特有的“.”來區(qū)別目錄和文件。最后,將得到的名稱數(shù)組通過臨時套接字發(fā)送到客戶端。NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆LIST命令用于向客戶端返回服14.4服務(wù)器程序設(shè)計LIST命令處理代碼如下:if(str.startsWith("LIST")){
try{
out.println("150ASCIIdata");
SockettempSocket=newSocket(host,tempPort);
PrintWriterout2=newPrintWriter(tempSocket.getOutputStream(),true);
Filefile=newFile(dir);
String[]dirStructure=newString[10];
dirStructure=file.list();
StringstrType="";
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計LIST命令處理代碼如下:Netw14.4服務(wù)器程序設(shè)計for(inti=0;iif(dirStructure[i].indexOf(".")==-1){strType="d";}
else
{strType="-";}
out2.println(strType+dirStructure[i]);
}
tempSocket.close();
out.println("226transfercomplete");
}
catch(IOExceptione){}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計for(inti=0;iif(小結(jié)文件傳輸協(xié)議(FTP:FileTransferProtocol)使得主機間可以共享文件。FTP使用TCP生成一個虛擬連接用于控制信息,然后再生成一個單獨的TCP連接用于數(shù)據(jù)傳輸。
FTP用于在因特網(wǎng)下載(Download)和上載(Upload)文件。實現(xiàn)FTP文件傳輸必須有FTP服務(wù)器和FTP客戶軟件。FTP服務(wù)一般運行在20和21兩個端口。端口20用于在客戶端和服務(wù)器之間傳輸數(shù)據(jù)流,而端口21用于傳輸控制流,并且是命令通向ftp服務(wù)器的進口。FTP也是一個客戶機/服務(wù)器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機程序,連接到在遠程主機上的FTP服務(wù)器程序。用戶通過客戶機程序向服務(wù)器程序發(fā)出FTP命令,服務(wù)器程序執(zhí)行用戶所發(fā)出的FTP命令,并將執(zhí)行的結(jié)果返回到客戶機。NetworkProgrammingAnIntroductiontoDatabaseSystem小結(jié)文件傳輸協(xié)議(FTP:FileTransferPr小結(jié)NetworkProgrammingAnIntroductiontoDatabaseSystem小結(jié)NetworkProgrammingAnIntro思考與編程1、一個FTP需建立哪兩種連接?2、FTP的傳輸有哪兩種方式?3、在JAVA中利用ftpclient類實現(xiàn)FTP服務(wù)器文件的上傳,下載,刪除功能。NetworkProgrammingAnIntroductiontoDatabaseSystem思考與編程1、一個FTP需建立哪兩種連接?NetworkP一、解析J2EE、J2SE、J2ME、JDK的區(qū)別Java2平臺包括:標準版(J2SE)、企業(yè)版(J2EE)和微縮版(J2ME)三個版本J2SE是Java2standardedition是Java2的標準版,主要用于桌面應(yīng)用軟件的編程J2EE即Java2enterpriseedition是Java2的企業(yè)版,主要用于分布式的網(wǎng)絡(luò)程序的開發(fā),如電子商務(wù)網(wǎng)站和ERP系統(tǒng)J2ME即Java2MicroEdition是Java的微型版,主要應(yīng)用于嵌入式系統(tǒng)開發(fā),如手機和PDA的編程。他們的范圍是:J2SE包含于J2EE中,J2ME包含了J2SE的核心類,但新添加了一些專有類,對于初學(xué)者,都是從J2SE入手的。JDK是Javadevelopmenttoolkit,相當于是Java的庫函數(shù),是編譯,運行java程序的工具包。NetworkProgrammingAnIntroductiontoDatabaseSystem一、解析J2EE、J2SE、J2ME、JDK的區(qū)別Java2NetworkProgramming版本發(fā)行日期JDK1.1.41997-09-12JDK1.1.51997-12-13JDK1.1.61998-04-24JDK1.1.71998-09-28JDK1.1.81999-04-08J2SE1.21998-12-04J2SE1.2.11999-03-30J2SE1.2.21999-07-08J2SE1.32000-05-08J2SE1.3.12001-05-17J2SE1.4.02002-02-13J2SE1.4.12002-09-16J2SE1.4.22003-06-26JavaSE5.0(1.5.0)2004-09-30JavaSE6.0(1.6.0)2006-04JavaSE7.0(1.7.0)2011-07-28JavaSE8.0(1.8.0)2013-09(預(yù)定)AnIntroductiontoDatabaseSystemNetworkProgramming版本發(fā)行日期JDK1二、基于TCP/IP協(xié)議棧的網(wǎng)絡(luò)編程基于TCP/IP協(xié)議棧的網(wǎng)絡(luò)編程是最基本的網(wǎng)絡(luò)編程方式,主要是使用各種編程語言,利用操作系統(tǒng)提供的套接字網(wǎng)絡(luò)編程接口,直接開發(fā)各種網(wǎng)絡(luò)應(yīng)用程序。本書主要講解這種網(wǎng)絡(luò)編程的相關(guān)技術(shù)。這種編程方式由于直接利用網(wǎng)絡(luò)協(xié)議棧提供的服務(wù)來實現(xiàn)網(wǎng)絡(luò)應(yīng)用,所以層次比較低,編程者有較大的自由度,在利用套接字實現(xiàn)了網(wǎng)絡(luò)進程通信以后,可以隨心所欲地編寫各種網(wǎng)絡(luò)應(yīng)用程序。這種編程首先要深入了解TCP/IP的相關(guān)知識,要深入掌握套接字網(wǎng)絡(luò)編程接口,更重要的是要深入了解網(wǎng)絡(luò)應(yīng)用層協(xié)議,例如,要想編寫出電子郵件程序,就必須深入了解SMTP和郵局協(xié)議第3版(PostOfficeProtocol3,POP3)。有時甚至需要自己開發(fā)合適的應(yīng)用層協(xié)議。NetworkProgrammingAnIntroductiontoDatabaseSystem二、基于TCP/IP協(xié)議棧的網(wǎng)絡(luò)編程NetworkProg三、基于WEB應(yīng)用的網(wǎng)絡(luò)編程Web又稱為萬維網(wǎng)或WWW,Web應(yīng)用是Internet上最廣泛的應(yīng)用。它用HTML來表達信息,用超鏈接將全世界的網(wǎng)站連成一個整體,用瀏覽器這種統(tǒng)一的形式來瀏覽,為人們提供了一個圖文并茂的多媒體信息世界。WWW已經(jīng)深入應(yīng)用到各行各業(yè)。無論是電子商務(wù)、電子政務(wù)、數(shù)字企業(yè)、數(shù)字校園,還是各種基于WWW的信息處理系統(tǒng)、信息發(fā)布系統(tǒng)和遠程教育系統(tǒng),都統(tǒng)統(tǒng)采用了網(wǎng)站的形式。這種巨大的需求催生了各種基于WWW應(yīng)用的網(wǎng)絡(luò)編程技術(shù),首先出現(xiàn)了一大批所見即所得的網(wǎng)頁制作工具,如Frontpage、Dreamweaver、Flash和Firework等,然后是一批動態(tài)服務(wù)器頁面的制作技術(shù),如ASP、JSP和PHP等。NetworkProgrammingAnIntroductiontoDatabaseSystem三、基于WEB應(yīng)用的網(wǎng)絡(luò)編程Web又稱為萬維網(wǎng)或WWW,網(wǎng)絡(luò)程序設(shè)計第1章Java網(wǎng)絡(luò)程序設(shè)計基礎(chǔ)
第2章Internet尋址
第3章URL通信
第4章套接字
第5章數(shù)據(jù)報套接字
第6章多線程
第7章非阻塞Socket通信
第8章對象序列化
第9章套接字安全
第10章遠程方法調(diào)用
第11章代理服務(wù)器
第13章電子郵件的發(fā)送和接收
第14章FTP服務(wù)器
AnIntroductiontoDatabaseSystem網(wǎng)絡(luò)程序設(shè)計第1章Java網(wǎng)絡(luò)程序設(shè)計基礎(chǔ)
第2章Int第14章FTP服務(wù)器FTP(FileTransferProtocol文件傳輸協(xié)議)是Internet上用來傳送文件的協(xié)議。在Internet上通過FTP服務(wù)器可以進行文件的上傳(Upload)或下載(Download)。FTP是實時聯(lián)機服務(wù),在使用它之前必須是具有該服務(wù)的一個用戶(用戶名和口令),工作時客戶端必須先登錄到作為服務(wù)器一方的計算機上,用戶登錄后可以進行文件搜索和文件傳送等有關(guān)操作,如改變當前工作目錄、列文件目錄、設(shè)置傳輸參數(shù)及傳送文件等。使用FTP可以傳送所有類型的文件,如文本文件、二進制可執(zhí)行文件、圖象文件、聲音文件和數(shù)據(jù)壓縮文件等。NetworkProgrammingAnIntroductiontoDatabaseSystem第14章FTP服務(wù)器FTP(FileTransferP14.1FTP工作原理
FTP采用C/S(客戶端/服務(wù)器)模式進行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。用戶從頭到尾都只需使用這個端口。但是FTP通信除了有一個默認端口21主要進行控制連接,進行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務(wù)器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務(wù)器端需要提供給客戶端一個IP地址和一個非標準端口。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP采用C/S(客戶端/服務(wù)器14.1FTP工作原理
FTP(FileTransferProtocol是文件傳輸協(xié)議的簡稱。用于工nternet上的控制文件的雙向傳輸。同時,它也是一個應(yīng)用程序。用戶可以通過它把自己機器與世界各地所有運行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的資源和信息。當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務(wù)器程序,它響應(yīng)請求把你指定的文件傳送到你的計算機中。FTP采用“客戶端/服務(wù)器”方式,用戶要在自己的本地計算機上安裝FTP客戶端程序。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP(FileTrans14.1FTP工作原理
從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計算機之間按照TCP/工P協(xié)議來傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器(Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP有一個根本的限制,那就是,如果用戶在某個主機上沒有注冊獲得授權(quán),即沒有用戶名和口令,就不能與該主機進行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠程主機建立連接并以匿名身份從遠程主機上拷貝文件,而不必是該遠程主機的注冊用戶。用戶使用特殊的用戶名“Anonymous”或“guest”就可有限制地訪問遠程主機上公開的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Email地址作為口令,以便更好地對訪問者進行跟綜。出于安全的目的,大部分匿名FTP主機一般只允許遠程用戶下載文件,而不允許上載文件。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理從根本上說,F(xiàn)TP協(xié)議就是在14.1FTP工作原理FTP工作模式上圖中用戶PI開始控制連接,控制連接與Telnet協(xié)議很象。在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進程。服務(wù)器PI向用戶PI返回標準應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數(shù)據(jù)端口上偵聽。這個數(shù)據(jù)連接是全雙工的。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP工作模式NetworkPr14.1FTP工作原理FTP工作模式NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP工作模式NetworkPr14.1FTP工作原理FTP傳輸模式FTP協(xié)議的任務(wù)是從一臺計算機將文件傳送到另一臺計算機,它與這兩臺計算機所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無關(guān)。假設(shè)兩臺計算機通過ftp協(xié)議對話,并且能訪問Internet,你可以用ftp命令來傳輸文件。每種操作系統(tǒng)使用上有某一些細微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進制數(shù)據(jù)傳輸模式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.1FTP工作原理FTP傳輸模式NetworkPr14.2ftpclient類
在J2SE中提供了與客戶端編程有關(guān)的Api,它就是.ftp.FtpClient類,F(xiàn)tpClient類封裝了FTP協(xié)議的相關(guān)指令與實現(xiàn)細節(jié),提供了一系列的方法,這些方法涵蓋了幾乎所有ftp的功能使用FtpClient類設(shè)計FTP客戶端程序可以讓編程人員輕松地實現(xiàn)登錄遠程FTP服務(wù)器、瀏覽服務(wù)器上的目錄、設(shè)置傳輸協(xié)議、上傳文件和下載文件等功能。FtpClient類的構(gòu)造方法和主要方法如下:NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類在J2SE中提供了與客戶端編14.2ftpclient類1.PublicFtpClient(Stringhostname)此構(gòu)造函數(shù)利用給出的主機名建立一條FTP連接,使用默認端口號2.PublicvoidopenServer(Stringhostname)這個方法用于建立一條與指定主機上的FTP服務(wù)器的連接,使用默認端口號。3.Publicvoidlogin(Stringusername,Stringpassword)此方法利用參數(shù)username和password登錄到FTP服務(wù)器。使用過Intemet的用戶應(yīng)該知道,匿名FTP服務(wù)器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。4.Publicvoidbinary():該命令可把傳輸格式設(shè)置為二進制格式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類1.PublicFtpCl14.2ftpclient類在JAVA中利用ftpclient類實現(xiàn)FTP服務(wù)器文件的上傳,下載,刪除功能。程序代碼見WORD附件NetworkProgrammingAnIntroductiontoDatabaseSystem14.2ftpclient類在JAVA中利用ftpcl14.3FTP命令大多數(shù)Internet服務(wù)一樣,F(xiàn)TP也是一個客戶機/服務(wù)器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機程序,連接到在遠程主機上的FTP服務(wù)器程序。用戶通過客戶機程序向服務(wù)器程序發(fā)出FTP命令,服務(wù)器程序執(zhí)行用戶所發(fā)出的FTP命令,并將執(zhí)行的結(jié)果返回到客戶機。FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS、Windows的命令行、LINUX、UNⅨ操作系統(tǒng)下都可以使用FTP,都會遇到大量的FTP內(nèi)部命令,熟悉并靈活應(yīng)用FTP命令,可以大大方便使用者,并收到事半功倍之效。(注:只要安裝了TCP/IP協(xié)議的機器就能使用ftp命令。ftp命令對大小寫是敏感的。)NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令大多數(shù)Internet服務(wù)一樣,F(xiàn)TP14.3FTP命令
命令格式:ftp[-v][-d][-i][-n][-g][-s:filename][-w:windowsize][computer]-v不顯示遠程服務(wù)器響應(yīng)-n禁止第一次連接的時候自動登陸-i在多個文件傳輸期間關(guān)閉交互提示-d允許調(diào)試、顯示客戶機和服務(wù)器之間傳遞的全部ftp命令-g不允許使用文件名通配符,文件名通配符的意思是說允許在本地文件以及路徑名中使用通配字符-s:filename指定包含ftp命令的文本文件。在ftp命令啟動后將自動運行這些命令。在加的參數(shù)里不能有空格。-w:windowsize忽略默認的4096傳輸緩沖區(qū)computer指定要連接的遠程計算機的ip地址NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令命令格式:ftp[-v][-d][14.3FTP命令FTP的主要操作都是基于各種命令基礎(chǔ)之上的。常用的命令有:◆設(shè)置傳輸模式,它包括ASCⅡ(文本)和BINARY二進制模式;◆目錄操作,改變或顯示遠程計算機的當前目錄(cd、dir/ls命令);◆連接操作,open命令用于建立同遠程計算機的連接;close命令用于關(guān)閉連接;◆發(fā)送操作,put命令用于傳送文件到遠程計算機;mput命令用于傳送多個文件到遠程計算機;◆獲取操作,get命令用于接收一個文件;mget命令用于接收多個文件。
NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令FTP的主要操作都是基于各種命令基14.3FTP命令基礎(chǔ)命令
1、ASC(ASCll)、bin(BINARY)、IMAGE、TYPEASCⅡ切換傳輸模式為文字模式(只能用來傳送DOC文件);BINARY切換傳輸模式為二進制模式(除文字文件外皆用此模式);IMAGE相當于BINARYTYPE讓你更改或顯示傳輸模式。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令基礎(chǔ)命令NetworkProgra14.3FTP命令2、CD、CDUP、LCD、P~WD、!CD改變當前工作目錄,例如:CD\PUB;CDUP回到上一層目錄,相當于你打CD..:LCD讓你更改或顯示LOCAL端的工作目錄,例如:LCD\TMP;PWD顯示工作目錄(REMOTE端):NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令2、CD、CDUP、LCD、P~WD、14.3FTP命令3、OPEN、username(user)和password(pass)命令User命令和Password命令分別用來提交客戶端用戶輸入的用戶名和口令。OPEN:連接到指定ftp服務(wù)器上,如opencomputerport其中computer一般是遠程計算機的ip地址,port不用說就是指定端口了username:張三password:123456NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令3、OPEN、username(14.3FTP命令4、GET、MGET、PUT、MPUT、RECV、SEND、GET下傳文件;說明:把遠程的文件拷貝到本地計算機上。如getremote-filelocal-fileremote-file是指定要復(fù)制的文件,local-file是指定本地計算機上的文件名,沒有指定的話則與remote-file同名。MGET批量下傳文件,說明:將多個遠程文件復(fù)制到本地計算機.例如:MGET*.GZ;PUT上傳文件;說明:將本地文件復(fù)制到遠程計算機中,如putlocal-fileremote-file其中l(wèi)ocal-file是指定要復(fù)制的本地文件,remote-file是指定要復(fù)制的遠程計算機上的文件名,不指定的話是和本地計算機上的文件名同名.MPUT批量上傳文件,說明:將本地文件復(fù)制到遠程計算機.如mputlocal-files...RECV相當于GET(RECV為RECEIVE的簡寫):SEND相當于PUT。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令4、GET、MGET、PUT、MPUT14.3FTP命令5、LS、DIR、MLS、MDIR、MKDIR、RMDIRLS顯示遠程目錄的文件和子目錄.如lsremote-directorylocal-file其中remote-directory是指要查看的列表的目錄,不指定的話顯示的是當前工作目錄。local-file是指定要保存列表的本地文件.不指定的話是在屏幕上輸出.DIR:相當于LS。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令5、LS、DIR、MLS、MDIR、M14.3FTP命令mls列多個遠程目錄的內(nèi)容MDIR相當于MLS;MKDIR像DOS下的MD(創(chuàng)建子目錄)一樣:RMDIR像DOS下的RD(刪除子目錄)一樣。NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令mls列多個遠程目錄的內(nèi)容Netw14.3FTP命令舉例說明ftp的命令行格式:(1)桌面--開始--運行輸入:ftp成功顯示:220ProFTPD12.4Server(ProFTPD)[ip地址]username:張三成功顯示:331Passwordrequiredfor用戶名password:123456成功顯示:230User用戶名loggedin進入ftp運行環(huán)境在ms-dos方式下的ftp>NetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令舉例說明ftp的命令行格式:Netwo14.3FTP命令(2)ftp使用的內(nèi)部命令cd:進入遠程主機目錄,改變到指定的目錄例如:ftp>cd..退向根目錄(cd后有空格)ftp>cdpath進目錄(目錄名為path)get:將遠程主機的文件傳至本地硬盤,“下傳”一個文件。例如:ftp>get1.htmd:\ggg\2.htm下傳文件一個文件。說明:遠程主機當前目錄的1.htm文件,復(fù)制到本地d盤的ggg目錄中,并且文件名改為2.htmNetworkProgrammingAnIntroductiontoDatabaseSystem14.3FTP命令(2)ftp使用的內(nèi)部命令Networ14.4服務(wù)器程序設(shè)計1、服務(wù)器主函數(shù)設(shè)計編程思路根據(jù)FTP的工作原理,在主函數(shù)中建立一個服務(wù)器套接字端口,等待客戶端請求,一旦客戶端請求被接受,服務(wù)器程序就建立一個服務(wù)器分線程,處理客戶端的命令。如果客戶端需要和服務(wù)器端進行文件的傳輸,則建立一個新的套接字連接來完成文件的操作。NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計1、服務(wù)器主函數(shù)設(shè)計Netwo14.4服務(wù)器程序設(shè)計publicclassftpServerextendsThread{privateSocketsocketClient;privateintcounter;privatestaticStringinitDir;publicstaticvoidmain(String[]args){if(args.length!=0){initDir=args[0];}else{initDir="c:";}inti=1;NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計publicclassftpS14.4服務(wù)器程序設(shè)計try{System.out.println(“ftpserverstarted!”);//監(jiān)聽21號端口
ServerSockets=newServerSocket(21);for(;;){
//接受客戶端請求
Socketincoming=s.accept();//創(chuàng)建服務(wù)線程
newftpServer(incoming,i).start();i++;}}catch(Exceptione){}}線程類的主要設(shè)計都是在run()方法中實現(xiàn)。用run()方法得到客戶端的套接字信息,根據(jù)套接字得到輸入流和輸出流,向客戶端發(fā)送歡迎信息NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計try{System.out.p14.4服務(wù)器程序設(shè)計2、FTP命令的處理(1)訪問控制命令◆username(user)和password(pass)命令User命令和Password命令分別用來提交客戶端用戶輸入的用戶名和口令。處理代碼如下:if(str.startsWith("USER")){user=str.substring(4);user=user.trim();out.println("331Password");}if(str.startsWith("PASS"))out.println("230User"+user+"loggedin.");NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計2、FTP命令的處理Netw14.4服務(wù)器程序設(shè)計◆CWD(CHANGEWORKINGDIRECTORY)命令該命令改變工作目錄到用戶指定的目錄。處理代碼如下:if(str.startsWith("CWD")){Stringstr1=str.substring(3);dir=dir+"/"+str1.trim();out.println("250CWDcommandsuccesful");}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆CWD(CHANGEWOR14.4服務(wù)器程序設(shè)計◆CDUP(CHANGETOPARENTDIRECTORY)改變當前目錄為上一層目錄,命令處理代碼如下:if(str.startsWith("CDUP")){intn=dir.lastIndexOf("/");dir=dir.substring(0,n);out.println("250CWDcommandsuccesful");}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆CDUP(CHANGETO14.4服務(wù)器程序設(shè)計◆QUIT:該命令退出及關(guān)閉與服務(wù)器的連接,輸出GOODBYE。命令處理代碼如下:if(str.startsWith("QUIT")){out.println("GOODBYE");done=true;}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆QUIT:該命令退出及關(guān)閉與服14.4服務(wù)器程序設(shè)計(2)傳輸參數(shù)命令◆Port:使用該命令時,客戶端必須發(fā)送客戶端用于接收數(shù)據(jù)的32位IP地址和16位的TCP端口號。這些信息以8位為一組,使用十進制傳輸,中間用逗號隔開。命令處理代碼如下:if(str.startsWith("PORT")){out.println("200PORTcommandsuccessful");inti=str.length()-1;intj=str.lastIndexOf(",");intk=str.lastIndexOf(",",j-1);Stringstr1,str2;str1="";str2="";NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計(2)傳輸參數(shù)命令Networ14.4服務(wù)器程序設(shè)計for(intl=k+1;lstr1=str2+str.charAt(l);
}
for(intl=j+1;l<=i;l++){str2=str2+str.charAt(l);}tempPort=Integer.parseInt(str1)*16*16+Integer.parseInt(str2);}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計for(intl=k+1;lst14.4服務(wù)器程序設(shè)計◆TYPE命令用來完成類型設(shè)置,處理代碼如下:if(str.startsWith("TYPE")){
out.println("200typeset");
}NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計◆TYPE命令用來完成類型設(shè)置,14.4服務(wù)器程序設(shè)計(3)FTP服務(wù)命令◆RETR(RETEIEVE)和STORE(STORE)文件傳輸命令包括從服務(wù)器中獲得文件RETR和向服務(wù)器中發(fā)送文件STOR,這兩個命令的處理非常類似。處理RETR命令時,首先得到用戶要獲得的文件的名稱,根據(jù)名稱創(chuàng)建一個文件輸入流,然后和客戶端建立臨時套接字連接,并得到一個輸出流。隨后,將文件輸入流中的數(shù)據(jù)讀出并借助于套接字輸出流發(fā)送到客戶端,傳輸完畢以后,關(guān)閉流和臨時套接字。STOR命令的處理也是同樣的過程,只是方向正好相反。NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計(3)FTP服務(wù)命令Netwo14.4服務(wù)器程序設(shè)計命令處理的代碼if(str.startsWith("RETR")){
out.println("150Binarydataconnection");
str=str.substring(4);
str=str.trim();
RandomAccessFileoutFile=new
RandomAccessFile(dir+"/"+str,"r");
SockettempSocket=newSocket(host,tempPort);
OutputStreamoutSocket=tempSocket.getOutputStream();
bytebyteBuffer[]=newbyte[1024];
intamount;
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計命令處理的代碼NetworkPr14.4服務(wù)器程序設(shè)計try{
while((amount=outFile.read(byteBuffer))!=-1){outSocket.write(byteBuffer,0,amount);
}
outSocket.close();
out.println("226transfercomplete");
outFile.close();
tempSocket.close();
}
catch(IOExceptione){}
}
NetworkProgrammingAnIntroductiontoDatabaseSystem14.4服務(wù)器程序設(shè)計try{
while((amou14.4服務(wù)器程序設(shè)計if(str.startsWith("STOR")){
out.println("150Binarydataconnection");
str=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 1599-2025 核桃林下套種綠豆技術(shù)規(guī)程
- 幼兒園裝修工程保修責(zé)任報告合同
- 餐廳員工試用期服務(wù)承諾書及勞動合同
- 2025年非營利組織管理師資格考試試卷及答案
- 2025年心理健康教育師資格考試試題及答案
- 商業(yè)綜合體室外停車位租賃服務(wù)協(xié)議
- 成都二手房買賣合同范本(帶租賃權(quán)處理)
- 互聯(lián)網(wǎng)長租公寓租賃及增值服務(wù)合同
- 鋼筋原材料批量采購合同
- 書香展板活動方案
- 萬達集團管理制度匯編-項目管理制度
- 比較中國的單一制和美國的聯(lián)邦制
- GB/T 4457.2-2003技術(shù)制圖圖樣畫法指引線和基準線的基本規(guī)定
- GB/T 28270-2012智能型閥門電動裝置
- 醫(yī)院搬遷方案
- “化危為安”線上講堂第70期 加強化工過程安全管理 實現(xiàn)安全治理模式向預(yù)防轉(zhuǎn)型
- 威索WM系列燃燒機調(diào)試步驟
- 軟土地基處理新技術(shù)課件
- 幼兒園精選優(yōu)質(zhì)公開課:中班音樂游戲-快樂的小青蛙(第十屆)
- 2022年天津市南開區(qū)小升初數(shù)學(xué)試卷
- (100+170+100)m變截面三向預(yù)應(yīng)力連續(xù)剛構(gòu)橋掛籃懸臂澆筑法施工方案49頁
評論
0/150
提交評論