版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Linux網(wǎng)絡(luò)編程課程設(shè)計(jì)班級(jí):姓名:指導(dǎo)老師:,一、設(shè)計(jì)背景Linux操作系統(tǒng)作為一個(gè)開(kāi)源的操作系統(tǒng)被越來(lái)越多的人所應(yīng)用,它的好處在于操作系統(tǒng)源代碼的公開(kāi)化!只要是基于GNU公約的軟件你都可以任意使用并修改它的源代碼。通過(guò)這次課程設(shè)計(jì)能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識(shí)和掌握LINUX平臺(tái)上應(yīng)用程序設(shè)計(jì)開(kāi)發(fā)的過(guò)程,將大學(xué)四年所學(xué)知識(shí)綜合運(yùn)用,為未來(lái)的工作學(xué)習(xí)打下基礎(chǔ)。1學(xué)習(xí)epoll跟FTP被動(dòng)模式2、掌握l(shuí)inux基本命令,例如Is、cd、login;3、學(xué)會(huì)如何編譯、運(yùn)行三、環(huán)境要求1、centos64位操作系統(tǒng)2、gcc編譯器41客戶(hù)端客戶(hù)端程序的主要任務(wù)有以下3個(gè):(1)、分析用戶(hù)輸入的命令。(
2、2)、根據(jù)命令向服務(wù)器發(fā)出請(qǐng)求(3)、接受服務(wù)器返回請(qǐng)求的結(jié)果客戶(hù)端為用戶(hù)提供了3種命令:(1)get:從服務(wù)器下載文件(2)list:列出客戶(hù)端當(dāng)前目錄的內(nèi)容(3)quit離開(kāi)4.2服務(wù)器端(1)、分析請(qǐng)求代碼。(2)、根據(jù)請(qǐng)求代碼做相應(yīng)的處理(3)、等待返回結(jié)果或者應(yīng)答信息五、軟件測(cè)試結(jié)果c.-Ci-I-ilfiS7RPiFidElIT.2GiB礙勰動(dòng)器tiJUHRJ沖械衿Sl.UUB坯盍砂器II-回收站云Gtir?世動(dòng)養(yǎng)Elotphin,:“芒.idientftcfentFkMt.i:Ftcient.h-txt鈿makefiletrrp.tHt擁rrediaf中-mcstBr_lT-t序
3、匚壬石t:疋.埜科軌git囲k?二占険tFtp-rnaster-llHcddentrMtbcaih26tcfent#./ftdietii:lZT.Q.D.lS67BConnect&:1toizt.DuDA.沏WE*HTn日,server日砂.ariorrymoi-eRassvp-ond:0J:匚bgii-.Ftdiaitj.getnrtMMBGZ3S匚b5ngdatiaEcrrecticriFtequ&stfidFileniztknsuoce誌irtdierii:gm庚對(duì)i-匚fosngdataraTertcn.RequKtEdFile日匸口餉aicreesfLi.FtdenO|dlerit:
4、intizienLl&msol已dent:Ftdentbb查找Ifi頂光+?nprinftLrcctj)l?calhce:匚ient.tl./hciert9876h、nruLuri:77.n.n.i.2?n皿|ct巳rarlv.M=imp:=ii】cn.niciatxrh=3.-)7l=tcient.o-iurrArulIcjn-ftderQgetmeomao-omngda:czonreztior.ztcleT:getbac-zZZ6Zosi-mdzi.c.onrH.liur.Ftcient1st-Iv(ll.1ljuIulLbeuestecFe_uei:Leu-ivf-?i-?.1wkIij
5、oL31T2E1-Ivlw-lv.1llLIlju:0504rv7-r-vrv-.1-tiodz13CG4rw-rr.1rootpot314301ihacti-?nsccessFjl.ikdLliunsLLUii:rjI.513:34baozi5L2;33flbtife3Z31Cliti23231C-tserve.l-51E:3Oftserve.o232OL6rmkeFile519-3Srniaornso51:3:232OL6rmkeFile519-3Srniaornso51:3:35tmp.tntrwr-r.1rtpot21rwr-r.1rootroot3731-tclc-iz)|clien
6、t:Ftcient六、部分主代碼#includeftserve.hintmain(intargc,char*argv)intsock_listen,sock_control,port,pid;if(argc!=2)printf(usage:./ftserveportn);exit(0);port=atoi(argv1);/createsocketif(sock_listen=socket_create(port)0)perror(Errorcreatingsocket);exit(1);while(1)/waitforclientrequest/createnewsocketforcontro
7、lconnectionif(sock_control=socket_accept(sock_listen)0)break;/createchildprocesstodoactualfiletransferif(pid=fork()0)perror(Errorforkingchildprocess);elseif(pid=0)close(sock_listen);ftserve_process(sock_control);close(sock_control);exit(0);close(sock_control);close(sock_listen);return0;/*Sendfilespe
8、cifiedinfilenameoverdataconnection,sending*controlmessageovercontrolconnection*Handlescaseofnullorinvalidfilename*/voidftserve_retr(intsock_control,intsock_data,char*filename)FILE*fd=NULL;chardataMAXSIZE;size_tnum_read;fd=fopen(filename,r);if(!fd)/senderrorcode(550Requestedactionnottaken)send_respon
9、se(sock_control,550);else/sendokay(150Filestatusokay)send_response(sock_control,150);donum_read=fread(data,1,MAXSIZE,fd);if(num_read0)printf(errorinfread()n);/sendblockif(send(sock_data,data,num_read,0)0);/sendmessage:226:closingconn,filetransfersuccessfulsend_response(sock_control,226);fclose(fd);i
10、ntftserve_list(intsock_data,intsock_control)chardataMAXSIZE;size_tnum_read;FILE*fd;intrs=system(ls-l|tail-n+2tmp.txt);if(rs0)if(send(sock_data,data,num_read,0)0)perror(err);memset(data,0,MAXSIZE);fclose(fd);send_response(sock_control,226);/send226return0;*or-1onerror*/intftserve_start_data_conn(ints
11、ock_control)charbuf1024;intwait,sock_data;/Waitforgo-aheadoncontrolconnif(recv(sock_control,&wait,sizeofwait,0)0)perror(Errorwhilewaiting);return-1;/Getclientaddressstructsockaddr_inclient_addr;socklen_tlen=sizeofclient_addr;getpeername(sock_control,(structsockaddr*)&client_addr,&len);inet_ntop(AF_I
12、NET,&client_addr.sin_addr,buf,sizeof(buf);/Initiatedataconnectionwithclientif(sock_data=socket_connect(CLIENT_PORT_ID,buf)0)return-1;returnsock_data;/*Authenticateauserscredentials*Return1ifauthenticated,0ifnot*/intftserve_check_user(char*user,char*pass)charusernameMAXSIZE;charpasswordMAXSIZE;char*p
13、ch;charbufMAXSIZE;char*line=NULL;size_tnum_read;size_tlen=0;FILE*fd;intauth=0;fd=fopen(.auth,r);if(fd=NULL)perror(filenotfound);exit(1);while(num_read=getline(&line,&len,fd)!=-1)memset(buf,0,MAXSIZE);strcpy(buf,line);pch=strtok(buf,);strcpy(username,pch);if(pch!=NULL)pch=strtok(NULL,);strcpy(passwor
14、d,pch);/removeendoflineandwhitespacetrimstr(password,(int)strlen(password);if(strcmp(user,username)=0)&(strcmp(pass,password)=0)auth=1;break;free(line);fclose(fd);returnauth;*Loginconnectedclient*/intftserve_login(intsock_control)charbufMAXSIZE;charuserMAXSIZE;charpassMAXSIZE;memset(user,0,MAXSIZE);
15、memset(pass,0,MAXSIZE);memset(buf,0,MAXSIZE);/Waittorecieveusernameif(recv_data(sock_control,buf,sizeof(buf)=-1)perror(recverrorn);exit(1);inti=5;intn=0;while(bufi!=0)usern+=bufi+;/tellclientwerereadyforpasswordsend_response(sock_control,331);/Waittorecievepasswordmemset(buf,0,MAXSIZE);if(recv_data(
16、sock_control,buf,sizeof(buf)=-1)perror(recverrorn);exit(1);i=5;n=0;while(bufi!=0)passn+=bufi+;return(ftserve_check_user(user,pass);*Waitforcommandfromclientand*sendresponse*Returnsresponsecode*/intftserve_recv_cmd(intsock_control,char*cmd,char*arg)intrc=200;charbufferMAXSIZE;memset(buffer,0,MAXSIZE)
17、;memset(cmd,0,5);memset(arg,0,MAXSIZE);/Waittorecievecommandif(recv_data(sock_control,buffer,sizeof(buffer)=-1)perror(recverrorn);return-1;strncpy(cmd,buffer,4);char*tmp=buffer+5;strcpy(arg,tmp);if(strcmp(cmd,QUIT)=0)rc=221;elseif(strcmp(cmd,USER)=0)|(strcmp(cmd,PASS)=0)|(strcmp(cmd,LIST)=0)|(strcmp
18、(cmd,RETR)=0)rc=200;else/invalidcommandrc=502;send_response(sock_control,rc);returnrc;/*Childprocesshandlesconnectiontoclient*/voidftserve_process(intsock_control)intsock_data;charcmd5;charargMAXSIZE;/Sendwelcomemessagesend_response(sock_control,220);/Authenticateuserif(ftserve_login(sock_control)=1)send_response(sock_control,230);elsesend_response(sock_control,430);exit(0);while(1)/Waitforcommandintrc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年汽車(chē)租賃融資合同擔(dān)保完善協(xié)議書(shū)3篇
- 2024宅基地地基使用權(quán)買(mǎi)賣(mài)合同范本土地流轉(zhuǎn)合同3篇
- 2024至2030年俄羅斯巧克力項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年小程序平臺(tái)合作開(kāi)發(fā)及推廣服務(wù)合同3篇
- 2025年物業(yè)管理合同補(bǔ)充協(xié)議
- 2024年度中外房地產(chǎn)買(mǎi)賣(mài)與租賃合同3篇
- 灌裝代工合同協(xié)議書(shū)(2025年)
- 門(mén)窗工程合同書(shū)2025年
- 2024年無(wú)房產(chǎn)證房屋買(mǎi)賣(mài)合同履約監(jiān)督與質(zhì)量保障合同3篇
- 2024年度緊急送餐響應(yīng)服務(wù)合同3篇
- 北疆文化全媒體傳播體系的構(gòu)建與實(shí)踐
- 低血糖暈厥應(yīng)急演練預(yù)案
- 四川省成都市某中學(xué)2024-2025學(xué)年高一年級(jí)上冊(cè)11月期中考試 英語(yǔ)試卷(含答案)
- 2025屆福建省廈門(mén)市重點(diǎn)中學(xué)高三第二次聯(lián)考語(yǔ)文試卷含解析
- OpenCV計(jì)算機(jī)視覺(jué)基礎(chǔ)教程(Python版)教學(xué)教案
- 2024年度二人合伙光伏發(fā)電項(xiàng)目投資合同3篇
- 2024-2030年中國(guó)室內(nèi)滑雪場(chǎng)市場(chǎng)需求預(yù)測(cè)及發(fā)展規(guī)劃研究報(bào)告
- 期末綜合素養(yǎng)評(píng)價(jià)一(試題)-2024-2025學(xué)年三年級(jí)上冊(cè)科學(xué)教科版
- 期末 (試題) -2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 動(dòng)車(chē)運(yùn)用所施工組織設(shè)計(jì)
- 新聞媒體編輯與發(fā)布規(guī)范流程
評(píng)論
0/150
提交評(píng)論