999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux系統(tǒng)的文件傳送實(shí)現(xiàn)

2017-04-25 09:41:43肖雪冬遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院
數(shù)碼世界 2017年4期
關(guān)鍵詞:系統(tǒng)

肖雪冬 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院

Linux系統(tǒng)的文件傳送實(shí)現(xiàn)

肖雪冬 遼寧錦州渤海大學(xué)信息科學(xué)與技術(shù)學(xué)院

本文實(shí)現(xiàn)Linux系統(tǒng)下的FTP文件傳輸系統(tǒng)。系統(tǒng)實(shí)現(xiàn)分為客戶端和服務(wù)器端,客戶端具有用戶登錄、目錄查看、上傳文件、下載文件等功能。服務(wù)器端具有查詢客戶端命令、處理客戶端命令和文件處理等功能,實(shí)現(xiàn)工具為C語(yǔ)言。客戶端應(yīng)用了套接字編程并通過(guò)定義ftpcmd結(jié)構(gòu)體,完成了文件的傳輸。

Linux系統(tǒng) FTP 客戶端文件傳輸

1 引言

Internet技術(shù)飛速發(fā)展,推動(dòng)了全球范圍內(nèi)信息的傳輸、交流和共享。海量的數(shù)據(jù)、軟件分布在世界各地,人們只需輸入信息,就能得到大量所需要的資源信息,文件傳輸是為其實(shí)現(xiàn)提供了重要方法。FTP(File Transfer Protocol, FTP)文件傳輸系統(tǒng)是最常用的文件傳輸方式,不同系統(tǒng)下的FTP文件傳送均有實(shí)現(xiàn),特別是基于windows系統(tǒng)。相對(duì)于windows系統(tǒng),Linux系統(tǒng)具有開(kāi)源和自由傳播等優(yōu)點(diǎn),有著廣泛的應(yīng)用前景。

文件傳送是因特網(wǎng)中的一項(xiàng)重要應(yīng)用,為廣大用戶提供了實(shí)時(shí)傳送非頁(yè)面的途徑。FTP文件傳輸協(xié)議是Internet最原始最重要的協(xié)議之一,雖然目前www已經(jīng)取代了FTP的很多功能,如軟件下載,文件傳輸?shù)鹊取5ㄟ^(guò)Internet從客戶向服務(wù)器傳輸文件時(shí),仍然還在使用FTP。因?yàn)榛ヂ?lián)網(wǎng)上各種各樣的軟件資源都是放在FTP服務(wù)器中的,而且這也是網(wǎng)上文件傳輸最好的方式。同樣在局域網(wǎng)上也可以建立FTP服務(wù),以滿足局域網(wǎng)文件傳輸和資源共享的需要。隨著網(wǎng)絡(luò)用戶的增加,對(duì)文件傳送功能的要求也越來(lái)越多,為了滿足用戶各有特色的需要,通用的文件傳送協(xié)議如FTP、TFTP和NFS等遇到了問(wèn)題,特別是Linux系統(tǒng)下為提供安全性、可靠性高的文獻(xiàn)傳送,需要設(shè)計(jì)獨(dú)有的文件發(fā)送和接收程序。

2 系統(tǒng)總體設(shè)計(jì)

本次課題的設(shè)計(jì)是實(shí)現(xiàn)一個(gè)采用C/S結(jié)構(gòu)的FTP系統(tǒng),所選用的設(shè)計(jì)平臺(tái)在上一章中我們進(jìn)行了比較詳細(xì)的介紹,在這一章我們將對(duì)FTP系統(tǒng)需要完成的目標(biāo)、功能需求、性能需求做出進(jìn)一步的說(shuō)明,并對(duì)整個(gè)C/S結(jié)構(gòu)系統(tǒng)進(jìn)行總體的設(shè)計(jì)。

文件傳送功能的實(shí)現(xiàn)主要包括:獲取磁盤(pán)信息,獲取目錄信息,獲取文件信息,運(yùn)行指定文件,刪除指定文件,刪除指定目錄,創(chuàng)建指定目錄,上傳下載文件,獲取遠(yuǎn)程文件圖標(biāo)。

本次課題的FTP系統(tǒng)的功能需求主要包括:

①實(shí)現(xiàn)文件的傳送,在設(shè)計(jì)中我們應(yīng)用C/S模型分別對(duì)用戶的下載要求和上傳要求進(jìn)行編程實(shí)現(xiàn)。采用的是一對(duì)一的傳輸模型,當(dāng)客戶端輸入下載或者上傳命令后,客戶端能夠作出正確的響應(yīng)并可以成功將文件下載到客戶端或者將文件上傳到服務(wù)器。

②FTP系統(tǒng)的用戶登錄驗(yàn)證,眾所周知,在Internet環(huán)境下進(jìn)行數(shù)據(jù)傳輸,我們很多情況下都需要提供自己的登錄名和密碼,才能實(shí)現(xiàn)相關(guān)的操作,這個(gè)要求既是區(qū)分等級(jí),判定用戶權(quán)限的好方法,也是保護(hù)隱私的一種必要操作。本次設(shè)計(jì)的FTP系統(tǒng)設(shè)計(jì)的是權(quán)限用戶,用戶想要連接上服務(wù)器,則必須輸入對(duì)應(yīng)的用戶名和密碼。才能進(jìn)行文件傳輸?shù)挠嘘P(guān)操作。

③FTP系統(tǒng)的目錄查看,目錄查看功能能夠直觀化的知道文件夾中包含哪些內(nèi)容,方便對(duì)其進(jìn)行操作和管理。

3 系統(tǒng)實(shí)現(xiàn)

FTP模型的結(jié)構(gòu)一般由服務(wù)器端和客戶端兩部分所構(gòu)成,本文研究的FTP文件傳輸系統(tǒng)是由Linux系統(tǒng)下的FTP服務(wù)器和客戶端構(gòu)成,在這一章將著重研究該環(huán)境下FTP客戶端和服務(wù)器的設(shè)計(jì)實(shí)現(xiàn)。本章的設(shè)計(jì)實(shí)例中,客戶端和服務(wù)器工作在同一臺(tái)電腦上,因此FTP服務(wù)器采用的是本地IP地址127.0.0.1。

3.1 FTP客戶端設(shè)計(jì)實(shí)現(xiàn)

FTP客戶端工作流程如下:

①首先創(chuàng)建一個(gè)客戶端控制連接套接字。

②創(chuàng)建init函數(shù)對(duì)數(shù)據(jù)進(jìn)行初始化,將FTP數(shù)據(jù)命令設(shè)置為被動(dòng)模式。

③客戶端向服務(wù)器發(fā)起控制連接,調(diào)用login函數(shù)登陸FTP服務(wù)器,服務(wù)器驗(yàn)證用戶名和用戶密碼。

④客戶端登陸服務(wù)器,客戶端輸入命令,服務(wù)器調(diào)用check_ ftpcmd函數(shù)對(duì)命令進(jìn)行合法性檢查,并解析該命令和該命令所需參數(shù)。

⑤命令驗(yàn)證正確,向服務(wù)器發(fā)送該命令,調(diào)用get_ftpcmd_ status函數(shù)接收服務(wù)器應(yīng)答狀態(tài)。

⑥服務(wù)器處理客戶端命令。

⑦關(guān)閉連接。

系統(tǒng)登錄成功后,先進(jìn)行目錄查看。文件目錄列表是指用戶請(qǐng)求查看在服務(wù)器當(dāng)前目錄下的文件列表,服務(wù)器響應(yīng)該查詢請(qǐng)求,并將該文件列表以目錄形式傳送回客戶端,程序設(shè)計(jì)中編寫(xiě)了函數(shù)do_list_pasv(intfd,charcmd,charargs)來(lái)實(shí)現(xiàn)被動(dòng)模式下在客戶端查看服務(wù)器目錄功能。

①調(diào)用pasv_notify(fd)函數(shù),客戶端向服務(wù)器發(fā)出PASV命令,客戶端通過(guò)make_conn(port_pasv)函數(shù)主動(dòng)連接到ftp服務(wù)器。

②客戶端發(fā)送ls命令請(qǐng)求查看服務(wù)器目錄,調(diào)用send_ ftpcmd(fd, cmd, args)函數(shù)將傳入的ls命令和命令參數(shù)構(gòu)造成FTP協(xié)議命令字的形式發(fā)給FTP服務(wù)器,然后客戶端調(diào)用get_ ftpcmd_status(fd, res_buffer)函數(shù)獲得服務(wù)器的應(yīng)答信息和應(yīng)答狀態(tài)status。

③調(diào)用list_flies(sockfd_pasv)函數(shù)實(shí)現(xiàn)在客戶端顯示服務(wù)器目錄。

程序中用for循環(huán)和read()函數(shù)讀取數(shù)據(jù)

④關(guān)閉數(shù)據(jù)連接。

建立FTP數(shù)據(jù)連接的前提是控制連接己經(jīng)正確建立,F(xiàn)TP的客戶身份驗(yàn)證需要在控制連接的引導(dǎo)下才能完成,程序設(shè)計(jì)中我們定義了login(host,port)函數(shù),它的主要功能是在啟動(dòng)客戶端程序時(shí),登錄FTP服務(wù)器。首先客戶端先與服務(wù)器建立數(shù)據(jù)連接,客戶端向服務(wù)器發(fā)送get(下載)命令,客戶端通過(guò)控制連接讀取到服務(wù)器的正確應(yīng)答命令,然后服務(wù)器開(kāi)始執(zhí)行下載命令,將文件在服務(wù)器下載到客戶端對(duì)應(yīng)的目錄下,文件下載完成后關(guān)閉連接。程序設(shè)計(jì)中編寫(xiě)了函數(shù)do_get_pasv(int fd, char cmd,char args)來(lái)實(shí)現(xiàn)被動(dòng)模式下客戶端從服務(wù)器下載文件。

①調(diào)用pasv_notify(fd)函數(shù)創(chuàng)建被動(dòng)模式下的監(jiān)聽(tīng)套接字,客戶端通過(guò)make_conn(port_pasv)函數(shù)主動(dòng)連接到ftp服務(wù)器。

②客戶端發(fā)送get命令請(qǐng)求從服務(wù)器下載文件,調(diào)用send_ ftpcmd(fd, cmd, args)函數(shù)將傳入的get命令和命令參數(shù)構(gòu)造成FTP協(xié)議命令字的形式發(fā)給FTP服務(wù)器,然后客戶端調(diào)用get_ ftpcmd_status(fd, res_buffer)函數(shù)獲得服務(wù)器的應(yīng)答信息和應(yīng)答代碼status。

③調(diào)用download_flie(fp, res_buffer)函數(shù)實(shí)現(xiàn)從當(dāng)前本地目錄中進(jìn)行上載文件的處理。

④關(guān)閉數(shù)據(jù)連接。

重置data_flag標(biāo)志位為0。其中g(shù)et指令代表從服務(wù)器下載文件到客戶端,/home/lzj/service代表要下載文件的路徑,download代表要下載的文件。第二個(gè)download代表把下載的文件保存到本地的名稱。

3.2 服務(wù)端設(shè)計(jì)實(shí)現(xiàn)

服務(wù)器程序的最終編譯結(jié)果放home/lzj/simple-ftp-master這個(gè)路徑下的,輸入/home/lzj/simple-ftp-master/myftpd/ home/lzj/service/ 8888開(kāi)啟服務(wù)器。其中,myftpd代表服務(wù)器名稱,home/lzj/service/表示服務(wù)器的當(dāng)前工作路徑,上傳到服務(wù)器的文件將存放在這個(gè)路徑下,8888是服務(wù)器開(kāi)啟的用來(lái)傳輸數(shù)據(jù)的端口。

服務(wù)器端首先建立一個(gè)socket(),設(shè)置好本地的IP和端口與socket進(jìn)行綁定,開(kāi)始監(jiān)聽(tīng)請(qǐng)求。當(dāng)服務(wù)器接收到客戶端連接請(qǐng)求后,發(fā)送確認(rèn),同客戶端建立連接,客戶端建立一個(gè)socket(),設(shè)置好服務(wù)器端的IP和提供服務(wù)器的端口,發(fā)送連接請(qǐng)求,當(dāng)接收到服務(wù)器確認(rèn)后,進(jìn)行連接,客戶端開(kāi)始與服務(wù)器進(jìn)行通信。處理客戶端發(fā)送的各種命令。

具體實(shí)現(xiàn)過(guò)程如下:

①創(chuàng)建服務(wù)端地址。

②本地套接字綁定IP地址及端口號(hào)。

③監(jiān)聽(tīng)客戶端發(fā)起的連接請(qǐng)求。

④接收客戶端發(fā)起連接請(qǐng)求。

⑤通過(guò)service_loop函數(shù)查詢客戶端命令。

⑥通過(guò)service_handleCmd函數(shù)處理客戶端命令。

FTP服務(wù)器創(chuàng)建函數(shù)完成對(duì)FTP客戶端命令的處理,并進(jìn)行客戶端與服務(wù)器端的交互。這里我們引入函數(shù)service_handleCmd( int a_socket, String *ap_argv,const int a_argc)處理客戶需求,從客戶端連接成功開(kāi)始到結(jié)束服務(wù)。

FTP服務(wù)器當(dāng)收到客戶端需要進(jìn)行數(shù)據(jù)傳輸?shù)恼?qǐng)求時(shí),建立新的套接字進(jìn)行數(shù)據(jù)傳輸,實(shí)現(xiàn)文件的上傳下載操作。在這里我們引入函數(shù)void handle file(int client sock)處理文件功能。這里依然是用套接字編程實(shí)現(xiàn)的。

4 總結(jié)

本文通過(guò)Linux操作系統(tǒng)下的FTP協(xié)議分析,完成了系統(tǒng)文件傳輸功能。我們通過(guò)程序設(shè)計(jì)實(shí)現(xiàn)了一個(gè)完整標(biāo)準(zhǔn)的LINUX下的FTP服務(wù)器和客戶端文件傳輸系統(tǒng),具有一定的學(xué)習(xí)意義和實(shí)際應(yīng)用價(jià)值。

[1]蔡勇.FTP服務(wù)器技術(shù)研究及實(shí)現(xiàn)[M].成都:電子科技大學(xué),2005

[2][美]Kurose,J.F等著.計(jì)算機(jī)網(wǎng)絡(luò):自頂向下方法與Internet特色(原書(shū)第3版)[M].北京:機(jī)械工業(yè)出版社.2005.6

[3][美]Richard Stevens,范建華譯.TCP/IP詳解[M].北京:機(jī)械工業(yè)出版社.2000.4

[4]劉晨.被忽視的FTP網(wǎng)絡(luò)信息資源[J].網(wǎng)絡(luò)縱橫,2001,(4):89-90

[5]王大亮,曾廣平.張德政.UBUNTU標(biāo)準(zhǔn)教程[M].北京:人民郵電出版社.2008.5

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動(dòng)化虛擬裝配系統(tǒng)開(kāi)發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 国产成人久久综合777777麻豆| 色噜噜综合网| 亚洲欧美精品日韩欧美| 久久这里只精品国产99热8| 国产午夜一级淫片| 日韩少妇激情一区二区| 丰满人妻中出白浆| 国内精品小视频福利网址| 成人一区在线| 小说区 亚洲 自拍 另类| 中文字幕亚洲电影| 在线一级毛片| 亚国产欧美在线人成| 成年人视频一区二区| 2021国产精品自产拍在线观看| www亚洲精品| 狠狠v日韩v欧美v| 91久草视频| 中文字幕无码中文字幕有码在线| 在线观看免费人成视频色快速| 女同久久精品国产99国| 国产永久在线观看| 久久人体视频| AV无码国产在线看岛国岛| 中文字幕久久波多野结衣| 国产不卡国语在线| 欧美色亚洲| 国产精品视频999| 99在线国产| 国产成人超碰无码| 中文字幕在线免费看| 一级毛片免费观看不卡视频| 色婷婷视频在线| 免费在线国产一区二区三区精品| 国产新AV天堂| 久久综合成人| 色妞永久免费视频| 色综合五月| 18黑白丝水手服自慰喷水网站| 国产在线观看一区二区三区| 国产乱人伦偷精品视频AAA| 在线精品欧美日韩| 91福利在线观看视频| 午夜无码一区二区三区在线app| 噜噜噜久久| 在线精品亚洲国产| 中文字幕无码电影| 久久国产精品麻豆系列| 一区二区日韩国产精久久| 91麻豆精品国产高清在线| 91po国产在线精品免费观看| 在线看国产精品| 久青草网站| 亚洲另类色| 欧美性爱精品一区二区三区| 国产精鲁鲁网在线视频| 2020国产精品视频| 多人乱p欧美在线观看| 激情無極限的亚洲一区免费| 国产99在线观看| 婷婷激情五月网| 国产内射在线观看| 国产三级毛片| 在线a视频免费观看| 亚洲色大成网站www国产| 黄色免费在线网址| 欧美成人h精品网站| 免费人成网站在线高清| 99人体免费视频| 免费一级大毛片a一观看不卡| jizz国产视频| 嫩草国产在线| 中文字幕亚洲精品2页| 亚洲中文精品人人永久免费| 国产成人久久777777| 国产真实二区一区在线亚洲| 成人中文字幕在线| 亚洲第一天堂无码专区| 国产精品久线在线观看| 四虎AV麻豆| 久久熟女AV| 欧美黄网在线|