下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、linuxFTP云盤實現(xiàn)】項云盤實現(xiàn)章錄前這兩天將之前學(xué)的linux基礎(chǔ)知識(件IO操作、進(jìn)程、線程、絡(luò)編程、進(jìn)程間通信)重新過了遍,嗯整體來說第次學(xué)習(xí)對知識點的理解更加深刻了,很多之前模棱兩可的概念,也有了的理解。俗話說:“溫故知新,可以為師矣”這些古的說的都是很有道理的。對于我個學(xué)習(xí)來說,可能并不是很聰明,但是我也相信勤能補拙,所以也愿意花時間去將之前學(xué)的知識點遍遍的復(fù)習(xí),將學(xué)習(xí)到的知識點通過個個的實驗進(jìn)演,這樣的學(xué)習(xí)式對我個來說是很有效的,確實感覺到了的不斷進(jìn)步。對于編程學(xué)習(xí)來說,光通過看視頻就想變強,可以說真的不可能,真的只能不斷的敲代碼,不斷的制造Bug 不斷的花時間去解決最后不斷的
2、總結(jié)知識點,這樣我們才能在編程道路上不斷的成長。對每個新知識的學(xué)習(xí),我感覺還是很有信的,總的來說還是較律,也有明確的計劃和標(biāo),嗯,總之每天都要讓前進(jìn)步 加油加油。(直都在奮的殷同學(xué))嗯 FTP云盤這個項服務(wù)端和客戶端加起來差不多500多代碼,當(dāng)然對于其中的很多細(xì)節(jié)可能并沒有處理,只是概將功能實現(xiàn)了,get xxx 和 put xxx進(jìn)件的下載和上傳時還有些問題,不過能可以獲取到我們想要的內(nèi)容,后會在優(yōu)化。提:以下是本篇章正內(nèi)容,下案例可供參考、服務(wù)端實現(xiàn)/*FTP-Server*實現(xiàn)客戶端與服務(wù)端消息發(fā)送(服務(wù)端只進(jìn)接受處理指令)*Date:2022-2-25*Author:殷同學(xué)*Versi
3、on:1.0*/#include #include /* See NOTES */#include #include #include #include #include #include /命令宏定義char databuf1024; /數(shù)據(jù)char buf1024; /數(shù)據(jù)char cmd24;void MSG_Handler(struct FTP msg,int fd);/信息處理/1.創(chuàng)建套接字/int socket(int domain, int type, int protocol);s_fd =socket(AF_INET,0);if(s_fd =0)s_addr.sin_fam
4、ily =AF_INET;s_addr.sin_port =htons(atoi(argv2); /端號轉(zhuǎn)換/int inet_aton(const char *cp, struct in_addr *inp);inet_aton(argv1,s_addr.sin_addr); /IP 地址/2.綁定/ int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);if(bind(s_fd,(struct sockaddr )s_addr,sizeof(struct sockaddr_in) =-1)if(listen(
5、s_fd,MAX_LISTEN) =-1)addr_len =sizeof(struct sockaddr_in);static int i =0;if(c_fd =-1)i;/連接成功將每次的ip和端打印MSG_Handler(msg,c_fd);printf(Client had quit connectn);exit(0);elseprintf(read errorn);/*- 相關(guān)功能函數(shù)-*/獲取分隔件p =strtok(str, ); /str p =strtok(NULL, ); /第次要以NULL 作為strprintf(p is n,p); /打印獲取的件int ret =0
6、;FILE fp =NULL;char file =NULL; /獲取件int ffile =0; /件打開返回描述符int len =0; /計算件長度char buf1024 =0; /緩存內(nèi)容char p =NULL;ret =get_cmd_type(msg.cmd);printf(Get cmd = %dn,ret);/FILE *popen(const char *command, const char *type);fp =popen(msg.cmd,r); /將獲取的內(nèi)容通過popen 函數(shù)打印出來if(NULL =fp)printf(popen failedn);exit(-
7、1);/將獲取的信息通過c_fd寫回客戶端chdir(p); /int chdir(const char *path); 路徑處理/判斷該件是否存在/int access(const char *pathname, int mode);if(access(file,F_OK) =-1) /不存在/將信息返回給客戶端/該件存在/打開件將件所以內(nèi)容復(fù)制到buf中在將其賦值給msg.data 發(fā)送到客戶端ffile =open(file,O_RDWR); /以可讀可寫的式打開len =lseek(ffile,0,); /計算件總長度lseek(ffile,0,); /read(ffile,buf,l
8、en); /讀取內(nèi)容close(ffile);msg.type =DOFILE; /標(biāo)志strcpy(msg.databuf,buf); /將讀取的內(nèi)容復(fù)制到msg.dataprintf(Client quitn);exit(-1);break;case PUT:/將內(nèi)容寫ffile =open(getDesDir(msg.cmd),O_RDWR|O_CREAT,0666);write(ffile,msg.buf,strlen(msg.buf);close(ffile);default:strcpy(buf,cmd not exit);、客戶端 Client實現(xiàn)/*FTP-Client*實現(xiàn)客
9、戶端與服務(wù)端消息發(fā)送(服務(wù)端只進(jìn)接受處理指令)*Date:2022-2-25*Author:殷同學(xué)*Version:1.0*/#include /* See NOTES */#include #include /命令宏定義#define MAX_LISTEN 20 /同時進(jìn)最監(jiān)聽數(shù)char databuf1024; /數(shù)據(jù)char buf1024; /數(shù)據(jù)char cmd24;struct FTP msg;int get_cmd_type(char cmd );char getDesDir(char str);int c_fd =0;int ret =0,mark =0;struct sock
10、addr_in c_addr;/1.創(chuàng)建套接字/int socket(int domain, int type, int protocol);c_fd =socket(AF_INET,0);if(c_fd =0)c_addr.sin_port =htons(atoi(argv2); /端號轉(zhuǎn)換/2.連接connectprintf(connect errorn);/連接成功 IPif(fork() =0) /進(jìn)程創(chuàng)建成功/每次進(jìn)命令的輸將前次清空memset(msg.cmd,0,sizeof(msg.cmd);/將命令發(fā)送給服務(wù)端/write(c_fd,msg.cmd,sizeof(msg.cm
11、d);MSG_Write_Handler(msg,c_fd);printf(-send cmd done-nn );while(1)MSG_Read_Handler(msg,c_fd);/*- 相關(guān)功能函數(shù)-*/case LS:case :case :write(fd,msg.cmd,sizeof(msg.cmd);break;case GET:/msg.type = DOFILE;write(fd,msg.cmd,sizeof(msg.cmd);break;case LLS:system(ls);break;case QUIT:write(fd,msg.cmd,sizeof(msg.databuf);exit(-1);break;case PUT:/先判斷該件是否存在物dir =getDesDir(msg.cmd);if(access(dir,F_OK) =0)/存在該內(nèi)容讀取到啊件filefd =open(dir,O_RDWR);read(filefd,msg.buf,sizeof(msg.buf);close(filefd);if(n_read =0)else if(msg.type =DOFILE)char file =getDesDi
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年寶雞職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫及答案1套
- 2026年普通心理學(xué)期末考試題庫及參考答案1套
- 2026新疆賽爾山投資運營有限公司及下屬公司招聘筆試模擬試題及答案解析
- 2026年常用電工儀表考試題庫及答案(網(wǎng)校專用)
- 2026年滄州航空職業(yè)學(xué)院單招職業(yè)傾向性測試模擬測試卷附答案
- 2026年哈爾濱北方航空職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試模擬測試卷及答案1套
- 2026年山西林業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試模擬測試卷附答案
- 浙江杭州市蕭山區(qū)面向2026屆高校畢業(yè)生提前批招聘教師245人筆試參考題庫及答案解析
- 2025江蘇徐州徐工弗迪電池科技有限公司招聘279人模擬試卷附答案
- 2026上海普陀區(qū)人民調(diào)解協(xié)會招聘13人筆試備考題庫及答案解析
- 安徽省九師聯(lián)盟2025-2026學(xué)年高三(1月)第五次質(zhì)量檢測英語(含答案)
- (2025年)四川省自貢市紀(jì)委監(jiān)委公開遴選公務(wù)員筆試試題及答案解析
- 2026屆江蘇省常州市高一上數(shù)學(xué)期末聯(lián)考模擬試題含解析
- 2026年及未來5年市場數(shù)據(jù)中國水質(zhì)監(jiān)測系統(tǒng)市場全面調(diào)研及行業(yè)投資潛力預(yù)測報告
- 2026安徽省農(nóng)村信用社聯(lián)合社面向社會招聘農(nóng)商銀行高級管理人員參考考試試題及答案解析
- 強夯地基施工質(zhì)量控制方案
- 藝考機構(gòu)協(xié)議書
- 2025年12月27日四川省公安廳遴選面試真題及解析
- 2025-2030中國海洋工程裝備制造業(yè)市場供需關(guān)系研究及投資策略規(guī)劃分析報告
- 《生態(tài)環(huán)境重大事故隱患判定標(biāo)準(zhǔn)》解析
- 2025年度吉林省公安機關(guān)考試錄用特殊職位公務(wù)員(人民警察)備考筆試試題及答案解析
評論
0/150
提交評論