版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
.\TCP/UDP通信實驗報告學(xué)號:姓名:.\實驗二:TCP/UDP通信實驗報告一、實驗?zāi)康氖炀氄莆誙DP、TCPClient/Server模式的通信原理。謝謝閱讀二、實驗內(nèi)容傳輸控制協(xié)議(TransportControlProtocol)是一種面向連接的,可謝謝閱讀靠的傳輸層協(xié)議。面向連接是指一次正常的 TCP傳輸需要通過在精品文檔放心下載TCP客戶端和TCP服務(wù)端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”??煽啃钥梢酝ㄟ^很多種方法來提供保證,在這里我們關(guān)心的是數(shù)據(jù)序列和確認(rèn)。TCP通過數(shù)據(jù)分段(Segment)中的序列號保證所有傳輸?shù)臄?shù)據(jù)可以在遠(yuǎn)端按照正常的次序進(jìn)行重組,而且通過確認(rèn)保證數(shù)據(jù)傳輸?shù)耐暾?。要通過TCP傳輸數(shù)據(jù),必須在兩端主機(jī)之間建立連接。舉例說明,TCP客戶端需要和TCP服務(wù)端建立連接,過程如圖12-1所示。謝謝閱讀圖12-1TCP客戶端與服務(wù)端連接過程.\①、第一步中,客戶端向服務(wù)端提出連接請求。這時TCPSYN標(biāo)感謝閱讀志置位??蛻舳烁嬖V服務(wù)端序列號區(qū)域合法,需要檢查??蛻舳嗽谥x謝閱讀TCP報頭的序列號區(qū)中插入自己的 ISN。服務(wù)端收到該TCP分段感謝閱讀后,在②、第二步以自己的ISN回應(yīng)(SYN標(biāo)志置位),同時確認(rèn)收到客戶端的第一個TCP分段(ACK標(biāo)志置位)。謝謝閱讀③、在第三步中,客戶端確認(rèn)收到服務(wù)端的ISN(ACK標(biāo)志置位)。到此為止建立完整的TCP連接,開始全雙工模式的數(shù)據(jù)傳輸過程。謝謝閱讀根據(jù)以上內(nèi)容編寫一個TCPClient/Server模式的通信程序。事感謝閱讀實上網(wǎng)絡(luò)程序是由兩個部分組成的--客戶端和服務(wù)器端。它們的建立精品文檔放心下載步驟如下:服務(wù)器端:socket-->bind-->listen-->accept精品文檔放心下載客戶端:socket-->connect。三、實驗步驟實驗按下述步驟進(jìn)行:(1)編寫UDP、TCPClient/Server模式的通信程序;謝謝閱讀(2)調(diào)試并運行自己編寫的實現(xiàn)程序;(3)了解TCPClient/Server模式的工作原理,比較二者的不同,如精品文檔放心下載出現(xiàn)異常情況,在實驗報告中寫出原因分析;.\(4)保留編寫的實現(xiàn)程序在你的用戶目錄下,以備輔導(dǎo)教師檢查。精品文檔放心下載四、實驗代碼/*UDP*//**客戶端的工作流程:首先調(diào)用socket函數(shù)創(chuàng)建一個Socket,填寫服務(wù)器地址及端謝謝閱讀口號,*從標(biāo)準(zhǔn)輸入設(shè)備中取得字符串,將字符串傳送給服務(wù)器端,并接收服務(wù)器端返回的精品文檔放心下載字*符串。最后關(guān)閉該socket。*Author:xiaopeng01121435*Date:2015/05/16*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>//定義端口號#definePORT5432intmain(intargc,char**argv)感謝閱讀{intcli_sockfd;socklen_taddrlen;charseraddr[14];structsockaddr_incli_addr;精品文檔放心下載charbuffer[256];intlen;.\if(argc!=2){//為輸入IP地址作為參數(shù)的時候提示使用方法printf("使用方法:./client\n");感謝閱讀exit(0);}/*建立socket*/cli_sockfd=socket(AF_INET,SOCK_DGRAM,0);精品文檔放心下載if(cli_sockfd<0){printf("創(chuàng)建socket失敗!\n");感謝閱讀return1;}/*填寫sockaddr_in*/addrlen=sizeof(structsockaddr_in);精品文檔放心下載bzero(&cli_addr,addrlen);cli_addr.sin_family=AF_INET;謝謝閱讀//cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);cli_addr.sin_port=htons(PORT);精品文檔放心下載if(inet_pton(AF_INET,argv[1],&cli_addr.sin_addr)<=0){printf("ip地址轉(zhuǎn)換失敗,IP:%s!\n",argv[1]);精品文檔放心下載exit(0);}bzero(buffer,sizeof(buffer));謝謝閱讀/*從標(biāo)準(zhǔn)輸入設(shè)備取得字符串*/printf("請輸入要發(fā)送的消息:\n");fgets(buffer,256,stdin);精品文檔放心下載/*將字符串傳送給server端*/fer),0,(structsockaddr*)&cli_addr,addrlen);謝謝閱讀printf("消息已發(fā)出!等待服務(wù)器的響應(yīng)...\n");精品文檔放心下載/*接收server端返回的字符串*/len=recvfrom(cli_sockfd,buffer,sizeof(buffer),0,(structsockaddr*)&cli_addr,&addrlen);精品文檔放心下載//printf("receivefrom%s\n",inet_ntoa(cli_addr.sin_addr));printf("從服務(wù)器收到:%s",buffer);精品文檔放心下載close(cli_sockfd);return0;}服務(wù)器端程序如下:/*UDP*//**服務(wù)器的工作流程:首先調(diào)用socket函數(shù)創(chuàng)建一個Socket,然后調(diào)用bind函數(shù)精品文檔放心下載將其與本機(jī)*地址以及一個本地端口號綁定,接收到一個客戶端時,服務(wù)器顯示該客戶端的IP地精品文檔放心下載址,并將字串*返回給客戶端。*Author:xiaopeng01121435*Date:2015/05/16*/#include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#definePORT5432intmain(intargc,char**argv)精品文檔放心下載{intser_sockfd;intlen;//intaddrlen;socklen_taddrlen;charseraddr[100];structsockaddr_inser_addr;感謝閱讀/*建立socket*/ser_sockfd=socket(AF_INET,SOCK_DGRAM,0);精品文檔放心下載if(ser_sockfd<0){printf("Icannotsocketsuccess\n");感謝閱讀return1;}printf("Socket創(chuàng)建成功!\n");/*填寫sockaddr_in結(jié)構(gòu)*/addrlen=sizeof(structsockaddr_in);謝謝閱讀bzero(&ser_addr,addrlen);ser_addr.sin_family=AF_INET;感謝閱讀ser_addr.sin_addr.s_addr=htonl(INADDR_ANY);謝謝閱讀ser_addr.sin_port=htons(PORT);感謝閱讀/*綁定客戶端*/if(bind(ser_sockfd,(structsockaddr*)&ser_addr,addrlen)<0)精品文檔放心下載{printf("連接錯誤!\n");return1;}printf("綁定Scoket成功!,等待客戶端的請求...\n");感謝閱讀while(1){bzero(seraddr,sizeof(seraddr));謝謝閱讀len=recvfrom(ser_sockfd,seraddr,sizeof(seraddr),0,(struct感謝閱讀sockaddr*)&ser_addr,&addrlen);謝謝閱讀/*顯示client端的網(wǎng)絡(luò)地址*/printf("客戶端IP地址:%s\n",inet_ntoa(ser_addr.sin_addr));感謝閱讀/*顯示客戶端發(fā)來的字串*/printf("接收到的消息:%s",seraddr);感謝閱讀/*將字串返回給client端*/sendto(ser_sockfd,seraddr,len,0,(structsockaddr*)&ser_addr,addrlen);精品文檔放心下載}close(ser_sock
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川教版(2020)八年級上冊信息技術(shù)2.1 初識人臉 教案
- 人教版七年級音樂下冊(簡譜)第二單元《百鳥朝鳳》教學(xué)設(shè)計
- 2022年廣西百色中考滿分作文《好習(xí)慣是成功的關(guān)鍵》
- 安徽省合肥市長豐縣七年級生物上冊 2.2.1《細(xì)胞通過分裂產(chǎn)生新細(xì)胞》教案4 (新版)新人教版
- 2020天津民族職專高中安全教育主題班會教案
- 小學(xué)校園欺凌的認(rèn)知與預(yù)防教育
- 3《不懂就要問》(教學(xué)設(shè)計)2024-2025學(xué)年統(tǒng)編版語文三年級上冊
- 山東省郯城縣郯城街道初級中學(xué)初中信息技術(shù) Flash基本操作教案
- Unit 2 My week (教學(xué)設(shè)計)-2024-2025學(xué)年人教版PEP英語五年級上冊
- Unit6 Work quietly(教學(xué)設(shè)計)-2023-2024學(xué)年人教PEP版英語五年級下冊
- 英漢國內(nèi)外翻譯現(xiàn)狀
- 血小板血漿(PRP)課件
- 水利工程咨詢、勘測設(shè)計費收費標(biāo)準(zhǔn)及計算程序
- GB/T 5374-2023摩托車和輕便摩托車可靠性試驗方法
- 標(biāo)識標(biāo)志及表面色管理規(guī)定
- 7社會主義核心價值觀(公正)
- JJG 966-2010手持式激光測距儀
- GB/T 4852-2002壓敏膠粘帶初粘性試驗方法(滾球法)
- GB/T 39499-2020大氣有害物質(zhì)無組織排放衛(wèi)生防護(hù)距離推導(dǎo)技術(shù)導(dǎo)則
- GB/T 34940.1-2017靜態(tài)切換系統(tǒng)(STS)第1部分:總則和安全要求
- NB-T 10908-2021 風(fēng)電機(jī)組混凝土-鋼混合塔筒施工規(guī)范
評論
0/150
提交評論