下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、綜合性實驗項目簡介學(xué)院名稱(公章):軟件學(xué)院2014-2015學(xué)年第一學(xué)期填表日期:實驗課程名稱TCP/IP協(xié)議分析實驗項目名稱應(yīng)用層系統(tǒng)服務(wù)分析實驗實驗項目性質(zhì)1、綜合性,2、設(shè)計性主講教師開課年級2012開課專業(yè)12網(wǎng)絡(luò)工程實驗地點開課日期2014年9月28日至2014年12月28日開課時間第14周星期二3-4節(jié)實驗項目簡介:實驗?zāi)康?1)掌握單用戶客戶端與服務(wù)器的連接和數(shù)據(jù)處理;(2)理解并掌握Socket模型(3)掌握Linux平臺網(wǎng)絡(luò)數(shù)據(jù)的傳送方法。實驗內(nèi)容(1)編寫基于流套接字的TCP/IP通信程序;(2)編寫基于流套接字的網(wǎng)絡(luò)通信原型系統(tǒng);(3)要求至少綜合使用到實驗?zāi)康闹刑岬降?/p>
2、二條或二條以上內(nèi)容。實驗條件學(xué)院提供網(wǎng)絡(luò)實驗室,1臺/學(xué)生微型計算機(jī),安裝有協(xié)議分析綜合教學(xué)系統(tǒng)。實驗原理使用TCP套接字編程可以基于TCP/IP協(xié)議面向連接的協(xié)議,它分為客戶端和服務(wù)器端,主要的實現(xiàn)過程為:服務(wù)器端:(1)使用socket()函數(shù)創(chuàng)建套接子。(2)將創(chuàng)建的套接字綁定到指定的地址結(jié)構(gòu)。(3)Listen()函數(shù)設(shè)置套接字為監(jiān)聽狀態(tài),使服務(wù)器進(jìn)入被打開狀態(tài)。(4)接受客戶端的請求,建立連接(5)接受,應(yīng)答客戶端的數(shù)據(jù)請求(6)終止連接客戶端:(1)使用socket()函數(shù)創(chuàng)建套接子。(2)調(diào)用connect。函數(shù)建立一個與TCP服務(wù)器的連接(3)發(fā)送數(shù)據(jù)請求,接受服務(wù)器的數(shù)據(jù)應(yīng)答
3、(4)終止連接流程圖如下:serversocket()bind()Tlisten()accept()os自動調(diào)用bind()函數(shù)解析出IP隨機(jī)分配一個閑置的編口綁定阻塞直到接受客戶socket編請求*三次握手connect()read()數(shù)據(jù)請求wwrite()處理請求write()數(shù)據(jù)響應(yīng)read()關(guān)閉連接closeclose()服務(wù)器端代碼:server.c#include#include#include#include#include#include#include#include#include#include#definePORT1234#defineBACKLOG2#define
4、MAXCHARSIZE1000voidprocess_client(intconnetfd,structsockaddr_inclient);intmain(void)intlistenfd,connectfd;structsockaddrinserver,client;intsin_size;intopt=SO_REUSEADDR;pid_tpid;if(listenfd=socket(AF_INET,SOCK_STREAM,0)=-1)perror(Createsocketfailed.);exit(-1);setsockopt(listenfd,SOL_SOCKET,SO_REUSEAD
5、DR,&opt,sizeof(opt);bzero(&server,sizeof(server);server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(listenfd,(structsockaddr*)&server,sizeof(structsockaddr)=-1)perror(Binderror.);exit(-1);if(listen(listenfd,BACKLOG)=-1)perror(listenerror.);exit(-1)
6、;sin_size=sizeof(structsockaddr_in);while(1)if(connectfd=accept(listenfd,(structsockaddr*)&client,&sin_size)=-1)perror(accepterror.);exit(-1);if(pid=fork()0)close(connectfd);continue;elseif(pid=0)close(listenfd);process_client(connectfd,client);exit(1);elseperror(Forkerror.n);exit(0);close(listenfd)
7、;voidprocess_client(intconnectfd,structsockaddr_inclient)charrecvbufMAXCHARSIZE;charsendbufMAXCHARSIZE;intrecvlen,i;printf(Yougetaconnectionfrom%s:%dn,inet_ntoa(client.sin_addr),client.sin_port);send(connectfd,Youconnecttheserver.n,29,0);while(recvlen=recv(connectfd,recvbuf,MAXCHARSIZE,0)recvbufrecv
8、len=0;printf(Receivemessage:%sn,recvbuf);for(i=0;irecvlen;i+)sendbufi=recvbufrecvlen-i-1;sendbufrecvlen=0;send(connectfd,sendbuf,strlen(sendbuf),0);close(connectfd);客戶端代碼:client.c#include#include#include#include#include#include#include#include#definePORT1234#defineMAXDATASIZE1000intmain(intargc,char
9、*argv)intfd,numbytes;charbufMAXDATASIZE;structhostent*he;structsockaddr_inserver;inti=1;if(argc!=2)printf(Usage:%n,argv0);exit(-1);if(he=gethostbyname(argv1)=NULL)perror(gethostbynameerror.);exit(1);if(fd=socket(AF_INET,SOCK_STREAM,0)=-1)perror(Createsocketfailed);exit(1);bzero(&server,sizeof(server
10、);server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr=*(structin_addr*)he-h_addr);if(connect(fd,(structsockaddr*)&server,sizeof(structsockaddr)=-1)perror(Binderror.);exit(1);if(numbytes=recv(fd,buf,MAXDATASIZE,0)=-1)perror(recverror.);exit(1);bufnumbytes=0;printf(ServerMessage:%sn,
11、buf);while(i)printf(Inputyourmessage(maxsizeis100):);scanf(%s,buf);if(strlen(buf)1)i=0;if(numbytes=send(fd,buf,strlen(buf),0)=-1)perror(Senderror.);exit(1);if(numbytes=recv(fd,buf,MAXDATASIZE,0)=-1)perror(readerror.n);exit(1);close(fd);運(yùn)行結(jié)果:服務(wù)器端等待客戶端的連接,客戶端并返回自己的IP地址,客戶端可以給服務(wù)器端發(fā)送信息。口。七1口工總山。出/蹤合性案取一
12、亡X文件編輯查看。終端標(biāo)簽幫助計roollocalhost琮合性實驗工gcc-oserverserver.croolailocalhost睇合性實睡產(chǎn).fserverYougel白connectionfrom127*0*0.1:42129Receivemessage:Rcccicmessage:arcReceivemessage:youI客戶端顯示連接成功并可以向服務(wù)器端發(fā)送信息(不大于100個字符)r。七locaiho與七二,綜合性實鰲-DX文件編短查看終端標(biāo)簽幫助rootMocalliasl琮合性實驗產(chǎn)gc-oc1ientclient.c*(rootMocalhost綜含性實驗#./client127*0-0.ServerMessage:Youconnecttheserver,Inputyourincssagefmaxsizcts100);howInputyourmcssagefnwxstzeis100)JareInputyourttiessagefmaxsizets100):youInputyourlEtssagcmaxiizcis100):root
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 善良為話題的議論文6篇
- 八年級第一學(xué)期期末質(zhì)量監(jiān)測語文試題及答案
- 股權(quán)轉(zhuǎn)讓協(xié)議書(公司全部轉(zhuǎn)讓)
- 2025-2030全球購物籃和購物車行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國語音生物識別身份驗證行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球光束通量計行業(yè)調(diào)研及趨勢分析報告
- 二零二五年度跨境電商平臺合作伙伴擔(dān)保合同范本4篇
- 二零二四年度智能家居抹灰施工合同范本3篇
- 二零二四年水電暖設(shè)備安裝與售后服務(wù)協(xié)議3篇
- 二年級數(shù)學(xué)兩位數(shù)加兩位數(shù)計算題單元練習(xí)試題帶答案
- 2025版開發(fā)商與購房者精裝修住宅買賣及售后服務(wù)合同3篇
- 心力衰竭的治療(基層診療與指南2024)
- 10.《運(yùn)動技能學(xué)習(xí)與控制》李強(qiáng)
- 檢察院專業(yè)知識試題及答案
- 冀教版數(shù)學(xué)七年級下冊綜合訓(xùn)練100題含答案
- 1神經(jīng)外科分級護(hù)理制度
- 場館惡劣天氣處置應(yīng)急預(yù)案
- 斜拉橋施工技術(shù)之斜拉索圖文并茂
- GB/T 6144-1985合成切削液
- 第三方在線糾紛解決機(jī)制(ODR)述評,國際商法論文
- 公寓de全人物攻略本為個人愛好而制成如需轉(zhuǎn)載注明信息
評論
0/150
提交評論