Java網(wǎng)絡(luò)編程技術(shù)-06_第1頁
Java網(wǎng)絡(luò)編程技術(shù)-06_第2頁
Java網(wǎng)絡(luò)編程技術(shù)-06_第3頁
Java網(wǎng)絡(luò)編程技術(shù)-06_第4頁
Java網(wǎng)絡(luò)編程技術(shù)-06_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第6章JavaFTP協(xié)議網(wǎng)絡(luò)編程1FTP

TCP/IP

協(xié)議組中的協(xié)議之一,是英文File

Transfer

Protocol的縮寫。該協(xié)議是Internet文件傳送的根底,它由一系列規(guī)格說明文檔組成,目標(biāo)是提高文件的共享性,提供非直接使用遠程計算機,使存儲介質(zhì)對用戶透明和可靠高效地傳送數(shù)據(jù)。簡單的說,F(xiàn)TP就是完成兩臺計算機之間的拷貝,從遠程計算機拷貝文件至自己的計算機上,稱之為“下載〔download〕”文件。假設(shè)將文件從自己計算機中拷貝至遠程計算機上,那么稱之為“上載〔upload〕”文件。在TCP/IP協(xié)議中,F(xiàn)TP標(biāo)準(zhǔn)命令TCP端口號為21,Port方式數(shù)據(jù)端口為20。6.1FTP協(xié)議2

6.2

FTP效勞器和客戶端同大多數(shù)Internet效勞一樣,F(xiàn)TP也是一個客戶/效勞器系統(tǒng)。用戶通過一個客戶機程序連接至在遠程計算機上運行的效勞器程序。依照

FTP

協(xié)議提供效勞,進行文件傳送的計算機就是

FTP

效勞器,而連接FTP效勞器,遵循FTP協(xié)議與效勞器傳送文件的電腦就是FTP客戶端。用戶要連上

FTP

效勞器,就要用到

FPT

的客戶端軟件,通常

Windows自帶“ftp”命令,這是一個命令行的

FTP

客戶程序,另外常用的

FTP

客戶程序還有

CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-貓眼等。36.3FTP協(xié)議應(yīng)用通過FTP應(yīng)用程序可以在Internet上實現(xiàn)遠程文件傳輸文件下載:從遠程主機→本地計算機文件上傳:從本地計算機→遠程主機46.4FTP命令的使用常用的FTP命令ftp>rename將遠程主機上的文件改名ftp>cd改變工作目錄ftp>mkdir在遠程主機創(chuàng)立子目錄ftp>binary指定以二進制方式傳送ftp>ascii指定以ASCII方式傳送ftp>!在不斷線的情況下,執(zhí)行本地命令ftp>pwd查閱遠程主機的當(dāng)前目錄ftp>quit結(jié)束聯(lián)機,關(guān)閉所有已翻開的連接ftp>help顯示幫助信息51、登錄FTP效勞器方法一:輸入命令ftphost其中host是FTP效勞器的域名或IP地址。如:C:\>ftp啟動FTP后,命令提示符變?yōu)閒tp>方法二:先輸入命令ftp啟動FTP,再用命令openhost登錄效勞器。如:C:\>ftpC:\>open登錄時先是顯示一些歡送信息,然后會要求輸入用戶名和密碼,比方匿名登錄效勞器:C:\>ftp…………User:anonymous331Usernameokay,pleasesendcompleteE-mailaddressaspasswordPassword:230Userloggedin,proceedftp>注意:在輸入密碼時,屏幕沒有任何顯示,但已經(jīng)輸入了,不要認(rèn)為出錯。登錄成功后就可以訪問FTP效勞器上的文件了。如果由于用戶名或密碼錯誤導(dǎo)致登錄失敗,可以用user命令重新登錄。62、查看FTP效勞器上的文件dir命令:顯示目錄和文件列表。ls命令:顯示簡易的文件列表。cd命令:進入指定的目錄。dir命令可以使用通配符“*”和“?”,比方,顯示當(dāng)前目錄中所有擴展名為jpg的文件,可使用命令dir*.jpg。cd命令中必須帶目錄名。比方cdmain表示進入當(dāng)前目錄下的main子目錄,cd..表示退回上一級子目錄。73、下載文件上傳和下載文件時應(yīng)該使用正確的傳輸類型,F(xiàn)TP的傳輸類型分為ASCII碼方式和二進制方式兩種,對.txt、.htm等文件應(yīng)采用ASCII碼方式傳輸,對.exe或圖片、視頻、音頻等文件應(yīng)采用二進制方式傳輸。在默認(rèn)情況下,F(xiàn)TP為ASCII碼傳輸方式。type命令:查看當(dāng)前的傳輸方式。ascii命令:設(shè)定傳輸方式為ASCII碼方式。binary命令:設(shè)定傳輸方式為二進制方式。以上命令都不帶參數(shù)。get命令:下載指定文件。get命令的格式:getfilename[newname],filename為下載的FTP效勞器上的文件名,newname為保存在本地計算機上時使用的名字,如果不指定newname,文件將以原名保存。get命令下載的文件將保存在本地計算機的工作目錄下。該目錄是啟動FTP時在盤符C:后顯示的目錄。如果想修改本地計算機的工作目錄,可以使用lcd命令。比方:lcdd:\表示將工作目錄設(shè)定為D盤的根目錄。mget命令:下載多個文件。mget命令的格式:mgetfilename[filename……]。mget命令支持通配符“*”和“?”,比方:mget*.mp3表示下載FTP效勞器當(dāng)前目錄下的所有擴展名為mp3的文件。84、上傳文件put命令:上傳指定文件。put命令的格式:putfilename[newname],filename為上傳的本地文件名,newname為上傳至FTP效勞器上時使用的名字,如果不指定newname,文件將以原名上傳。上傳文件前,應(yīng)該根據(jù)文件的類型設(shè)置傳輸方式,本機的工作目錄也應(yīng)該設(shè)置為上傳文件所在的目錄。5、結(jié)束并退出FTPclose命令:結(jié)束與效勞器的FTP會話。quit命令:結(jié)束與效勞器的FTP會話并退出FTP環(huán)境。96、其它FTP命令pwd命令:查看FTP效勞器上的當(dāng)前工作目錄。renamefilenamenewfilename命令:重命名FTP效勞器上的文件。deletefilename命令:刪除FTP效勞器上的文件。help[cmd]命令:顯示FTP命令的幫助信息,cmd是命令名,如果不帶參數(shù),那么顯示所有FTP命令。106.5.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ù)傳輸模式。11ASCII傳輸方式假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當(dāng)文件傳輸時ftp通常會自動地調(diào)整文件的內(nèi)容以便于把文件解釋成另外那臺計算機存儲文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?,它們可能是程序,?shù)據(jù)庫,字處理文件或者壓縮文件〔盡管字處理文件包含的大局部是文本,其中也包含有指示頁尺寸,字庫等信息的非打印字符〕。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對這些文件進行處理,這也是下面要講的二進制傳輸。12二進制傳輸模式在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應(yīng)的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進制文件,即使不需要也仍會轉(zhuǎn)譯。這會使傳輸稍微變慢,也會損壞數(shù)據(jù),使文件變得不能用?!苍诖蠖鄶?shù)計算機上,ASCII方式一般假設(shè)每一字符的第一有效位無意義,因為ASCII字符組合不使用它。如果你傳輸二進制文件,所有的位都是重要的?!橙绻阒肋@兩臺機器是同樣的,那么二進制方式對文本文件和數(shù)據(jù)文件都是有效的。136.6JavaFTP協(xié)議網(wǎng)絡(luò)編程1.用Java類庫2.用第3方類庫14JavaFTP類庫類:FtpClient包:.*;

15Java第3方FTP類庫JScape,iNetFactory:/nsoftware,IP*Works:ipworks.FtpEnterpriseDistributedTechnologies,JavaFTPClientLibrary:IBMalphaWorks,FTPBeanSuite:SourceForge,JFtp:TheJakartaProject,JakartaCommons/Net:JavaShopJNetBeans:FlorentCueto,JavaFTPAPI:BeaPetrovicova,jFTP:TheGlobusProject,JavaCoGKit:166.7JavaFTPAPI17類 | +-- | +-- | +--18 FtpClient構(gòu)造方法有:publicFtpClient()publicFtpClient(Stringhost)throwsIOExceptionpublicFtpClient(Stringhost,intport)throwsIOException19FtpClient主要方法publicvoidlogin(Stringlogin,Stringpassword)throwsIOExceptionpublicTelnetInputStreamget(Stringfilename)throwsIOExceptionpublicTelnetOutputStreamput(Stringfilename)throwsIOExceptionpublicTelnetInputStreamlist()throwsIOExceptionpublicvoidcd(Stringpath)throwsIOExceptionpublicvoidascii()throwsIOExceptionpublicvoidbinary()throwsIOExceptionpublicvoidcloseServer()throwsIOException20JavaFTP工作流程21JavaAPI與FTP命令對照:

.ftp FTP指令 login USER<username> PASS<password> get RETR<filename> put STOR<filename> list LIST[<pathname>] cd CWD<pathname> ascii TYPEA binary TYPEI closeServer QUIT 22JavaFTP客戶端編程程序例importjava.io.*;importjava.util.*;import.*;import;public

classFtpUtil{FtpClientftpClient;public

voidconnectServer(Stringserver,Stringuser,Stringpassword,Stringpath)throwsIOException{ftpClient=newFtpClient();ftpClient.openServer(server);ftpClient.login(user,password);if(path.length()!=0)ftpClient.cd(path);ftpClient.binary();}23public

longupload(Stringfilename,Stringnewname)throwsException{longresult=0;//ftp輸出流TelnetOutputStreamos=null;FileInputStreamis=null;try{file_in=newjava.io.File(filename);if(!file_in.exists())return-1;if(file_in.length()==0)return-2;os=ftpClient.put(newname);result=file_in.length();is=newFileInputStream(file_in);byte[]bytes=new

byte[1024];intc;while((c=is.read(bytes))!=-1){os.write(bytes,0,c);}}finally{if(is!=null){is.close();}if(os!=null){os.close();}}returnresult;}24public

longupload(Stringfilename)throwsException{Stringnewname="";if(filename.indexOf("/")>-1){newname=filename.substring(filename.lastIndexOf("/")+1);}else{newname=filename;}returnupload(filename,newname);}public

longdownload(Stringfilename,Stringnewfilename)throwsException{longresult=0;TelnetInputStreamis=null;FileOutputStreamos=null;try{is=ftpClient.get(filename);outfile=newjava.io.File(newfilename);os=newFileOutputStream(outfile);byte[]bytes=new

byte[1024];intc;25while((c=is.read(bytes))!=-1){os.write(bytes,0,c);result=result+c;}}catch(IOExceptione){e.printStackTrace();}finally{if(is!=null){is.close();}if(os!=null){os.close();}}returnresult;}publicListgetFileList(Stringpath){Listlist=newArrayList();try{DataInputStreamdis=newDataInputStream(ftpCList(path));Stringfilename="";while((filename=dis.readLine())!=null){list.add(filename);}}catch(Exceptione){e.printStackTrace();}returnlist;}26public

voidcloseServer()throwsIOException{try{if(ftpClient!=null){ftpClient.closeServer();}}catch(IOExceptione){e.printStackTrace();}}public

static

voidmain(String[]args)throwsException{FtpUtilftp=newFtpUtil();try{ftp.connectServer("0","zlj","zlj","/ODBC");System.out.println("ok1");//ftp.createDir("ddd");System.out.println("ok2");System.out.println("filesize:"+ftp.upload("D:/dd.txt")+"字節(jié)");List

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論