版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Linux網(wǎng)絡(luò)編程課程設(shè)計(jì)班級:姓名:指導(dǎo)老師:,一、設(shè)計(jì)背景Linux操作系統(tǒng)作為一個開源的操作系統(tǒng)被越來越多的人所應(yīng)用,它的好處在于操作系統(tǒng)源代碼的公開化!只要是基于GNU公約的軟件你都可以任意使用并修改它的源代碼。通過這次課程設(shè)計(jì)能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識和掌握LINUX平臺上應(yīng)用程序設(shè)計(jì)開發(fā)的過程,將大學(xué)四年所學(xué)知識綜合運(yùn)用,為未來的工作學(xué)習(xí)打下基礎(chǔ)。1學(xué)習(xí)epoll跟FTP被動模式2、掌握linux基本命令,例如Is、cd、login;3、學(xué)會如何編譯、運(yùn)行三、環(huán)境要求1、centos64位操作系統(tǒng)2、gcc編譯器41客戶端客戶端程序的主要任務(wù)有以下3個:(1)、分析用戶輸入的命令。(
2、2)、根據(jù)命令向服務(wù)器發(fā)出請求(3)、接受服務(wù)器返回請求的結(jié)果客戶端為用戶提供了3種命令:(1)get:從服務(wù)器下載文件(2)list:列出客戶端當(dāng)前目錄的內(nèi)容(3)quit離開4.2服務(wù)器端(1)、分析請求代碼。(2)、根據(jù)請求代碼做相應(yīng)的處理(3)、等待返回結(jié)果或者應(yīng)答信息五、軟件測試結(jié)果c.-Ci-I-ilfiS7RPiFidElIT.2GiB礙勰動器tiJUHRJ沖械衿Sl.UUB坯盍砂器II-回收站云Gtir?世動養(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庚對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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療管理方案(6篇)
- 初中語文課件惠子相梁
- 特殊教育師資培訓(xùn)-洞察分析
- 醫(yī)師調(diào)動申請書范文(6篇)
- 醫(yī)學(xué)視角下的學(xué)生運(yùn)動損傷預(yù)防與恢復(fù)
- 信息技術(shù)在小學(xué)教育中的創(chuàng)新應(yīng)用案例
- 以創(chuàng)意為動力的視覺報告編排
- 辦公效率提升的匯報制作技巧
- 以家為基點(diǎn)的殘疾人士社交技能培訓(xùn)方法研究
- 辦公空間設(shè)計(jì)與家庭氛圍的營造
- 水塘清淤專項(xiàng)方案
- 暗黑破壞神裝備大全
- 網(wǎng)絡(luò)安全技術(shù)知識競賽考試題庫500題(含答案)
- 外墻水包水清工施工合同
- 幼兒園游戲設(shè)計(jì)與實(shí)施研究
- 2023年國家糧食和物資儲備局招聘考試真題及答案
- 自然資源學(xué)原理(緒論)蔡運(yùn)龍
- 《零件測繪》學(xué)業(yè)水平考試題庫(濃縮300題)
- 大學(xué)英語(一)智慧樹知到期末考試答案2024年
- 高空作業(yè)安全免責(zé)聲明
- 集美大學(xué)航海技術(shù)船舶避碰與值班教案2課件
評論
0/150
提交評論