linux網(wǎng)絡(luò)編程課程設(shè)計_第1頁
linux網(wǎng)絡(luò)編程課程設(shè)計_第2頁
linux網(wǎng)絡(luò)編程課程設(shè)計_第3頁
linux網(wǎng)絡(luò)編程課程設(shè)計_第4頁
linux網(wǎng)絡(luò)編程課程設(shè)計_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

linux網(wǎng)絡(luò)編程課程設(shè)計一、 設(shè)計背景Linux操作系統(tǒng)作為一個開源的操作系統(tǒng)被越來越多的人所應(yīng)用,它的好處在于操作系統(tǒng)源代碼的公開化!只要是基于GNU公約的軟件你都可以任意使用并修改它的源代碼。通過這次課程設(shè)計能更好的學(xué)習(xí)網(wǎng)絡(luò)編程知識和掌握LINUX平臺上應(yīng)用程序設(shè)計開發(fā)的過程,將大學(xué)四年所學(xué)知識綜合運用,為未來的工作學(xué)習(xí)打下基礎(chǔ)。二、 設(shè)計目的1、 學(xué)習(xí)epoll跟FTP被動模式2、 掌握linux基本命令,例如Is、cd、login;3、 學(xué)會如何編譯、運行三、 環(huán)境要求1、 centos64位操作系統(tǒng)2、 gcc編譯器四、 設(shè)計原理4、 1客戶端客戶端程序的主要任務(wù)有以下3個:(1) 、分析用戶輸入的命令。(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é)果六、部分主代碼tfinclude"ftserve、h"intmain(intargctchar*argv[]){intsock_listen,sock_control,port,pid;if(argc!=2)(printf(nusage:、/ftserveport\n");exit(0);}port二atoi(argv[l]);//createsocketif((sock_listen=socket_create(port))<0)(perror(nErrorcreatingsocket");exit(l);}wMle(l){//waitfordientrequest//createnewsocketforcontrolconnectionif((sock_control=socket_accept(sock_listen))〈0)break;//createchildprocesstodoactualfiletransferif((pid=fork())<0){perror(nErrorforkingchildprocessH);}elseif(pid==0){close(sock_listen);ftserve_process(sock_control);close(sock_control);exit(0);}close(sock_control);}close(sock_listen);return0;}/***Sendfilespecifiedinfilenameoverdataconnection,sending*controlmessageovercontrolconnection*Handlescaseofnullorinvalidfilename*/voidftserve_retr(intsock_control,intsock_data,char*filename){FILE*fd=NULL;chardata[MAXSIZE];size_tnuni_re8d;fd=fopen(filename,nrn);if(!fd){//senderrorcode(550Requestedactionnottaken)send_response(sock_control,550);}else{//sendokay(150Filestatusokay)send_response(sock_control,150);do{nuni_reEid=fread(data,1,MAXSIZE,fd);if(num_read<0)(printf("errorinfread()\n");}//sendblockif(send(sock_data,data,num_read,0)<0)perror(nerrorsendingfile\n");}while(num_read>0);//sendmessage:226:closingconn,filetransfersuccessfulsend_response(sock_control,226);fclose(fd);}}/***Sendlistoff訂esincurrentdirectory*overdataconnection*Returnl|taillonerror*/intftserve_start_data_corm(intsock_control)(charbuf[1024];intwait,sock_data;//Waitforgo-aheadoncontrolconnif(recv(sock_control,&wait,sizeofwait,0){perror("Errorwhilewaiting");returnl;returnsock_data;}/***Authenticateauserrscredentials*Returnlifauthenticated,0ifnot*/intftserve_check_user(char*use「char*pass){charusername[MAXSIZE];charpassword[MAXSIZE];char*pch;charbuf[MAXSIZE];char*line=NULL;size_tnum_read;size_tlen=0;FILE*fd;intauth=0;fd=fopen("、auth","r");if(fd二二NULL)(perror(Hfilenotfound");exit(l);}while((num_read=getline(&line,&len,fd))!=1)(perror(Hrecverror\nn);exit(l);}inti二5;intn=0;while(buf[i]!=0)user[n++]=buf[i++];//tellclientwe1rereadyforpasswordsend_response(sock_control,331);//Waittorecievepasswordmemset(buf,0,MAXSIZE);if((recv_dato(sock_control,buf,sizeof(buf)))==1){perror(nrecverror\nH);return-1;}strncpy(cmd,buffer,4);char*tmp=buffer+5;strcpy(arg,tmp);if(strcmp(cmd,"QUIT")==0){rc=221;}elseif((strcmp(cmd,HUSERH)==O)I|(strcmp(cmd,"PASS")=0)I|(strcmp(cmd,"LIST")二二0)I|(strcmp(cmd,'rRETR")==0))(rc=200;}else{//invalidcommandrc=502;}send_response(sock_control,rc);returnrc;}/***Childprocesshandiesconnectiontoclient*/voidftserve_process(intsock_control)(intsock_data;charcmd[5];chararg[MAXSIZE];//Sendwelcomemessagesend_response(sock_control,220);//Authenticateuserif(ftserve_login(sock_control)==1)(send_response(sock_control,230);}else{send_response(sock_control,430);exit(0);}while(1){//Waitforcommandintrc=ftserve_recv_cmd(sock_control,cmd,arg);if((rc<0)I(rc==221))(break;}if(rc==200){//Opendataconnectionwithclientif((sock_data=ftserve_start_data_conn(sock_control))<0){close(sock_control);exit(l);}//Executecommandif(strcmp(cmd,ULISTH)==O){//Dolistftserve_list(sock_data,sock_control);}elseif(strcmp(cmd,,'RETR,,)==O){//

溫馨提示

  • 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

提交評論