![互聯(lián)網(wǎng)原理與應(yīng)用實驗報告_第1頁](http://file4.renrendoc.com/view/2404879fab34ae56f0b98c3ca486c630/2404879fab34ae56f0b98c3ca486c6301.gif)
![互聯(lián)網(wǎng)原理與應(yīng)用實驗報告_第2頁](http://file4.renrendoc.com/view/2404879fab34ae56f0b98c3ca486c630/2404879fab34ae56f0b98c3ca486c6302.gif)
![互聯(lián)網(wǎng)原理與應(yīng)用實驗報告_第3頁](http://file4.renrendoc.com/view/2404879fab34ae56f0b98c3ca486c630/2404879fab34ae56f0b98c3ca486c6303.gif)
![互聯(lián)網(wǎng)原理與應(yīng)用實驗報告_第4頁](http://file4.renrendoc.com/view/2404879fab34ae56f0b98c3ca486c630/2404879fab34ae56f0b98c3ca486c6304.gif)
![互聯(lián)網(wǎng)原理與應(yīng)用實驗報告_第5頁](http://file4.renrendoc.com/view/2404879fab34ae56f0b98c3ca486c630/2404879fab34ae56f0b98c3ca486c6305.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 華南師范大學(xué)本科學(xué)生實驗報告 實驗課程:互聯(lián)網(wǎng)原理與應(yīng)用 實驗名稱:SOCKET網(wǎng)絡(luò)程序設(shè)計一、實驗?zāi)繕?biāo):a、進一步掌握UDP及TCP協(xié)議的工作原理b、掌握SOCKET編程的基本方法c、學(xué)習(xí)應(yīng)用C語言與WinSock2進行簡單的無連接的網(wǎng)絡(luò)程序設(shè)計,實現(xiàn)網(wǎng)絡(luò)數(shù)二、實驗原理:1、關(guān)于使用套接字編程的一些基本概念(a) 半相關(guān)與全相關(guān)(b) TCP/IP協(xié)議的地址結(jié)構(gòu)struct sockaddr_inshort sin_family; /*AF_INET*/u_short sin_port; /*16位端口號,網(wǎng)絡(luò)字節(jié)順序*/struct in_addr sin_addr; /*32位IP地址
2、,網(wǎng)絡(luò)字節(jié)順序*/char sin_zero8; /*保留*/(c) 套接字類型TCP/IP的socket提供下列三種類型套接字。流式套接字(SOCK_STREAM)、數(shù)據(jù)報式套接字(SOCK_DGRAM)原始式套接字(SOCK_RAW)(d) 基本套接字系統(tǒng)調(diào)用 (1) 創(chuàng)建套接字socket() (2) 指定本地地址bind() (3) 建立套接字連接connect()與accept() (4) 監(jiān)聽連接listen() (5) 數(shù)據(jù)傳輸send()與recv() (6) 輸入/輸出多路復(fù)用select() (7) 關(guān)閉套接字closesocket()2、用于無連接協(xié)議(如UDP)的SOC
3、KET系統(tǒng)調(diào)用流程框圖3、面向連接協(xié)議(如TCP)的SOCKET系統(tǒng)調(diào)用流程框圖三、實驗設(shè)備及材料:計算機、路由器實驗流程或裝置示意圖a、用于無連接協(xié)議(如UDP)的SOCKET系統(tǒng)調(diào)用流程框圖:Socket()Bind()等待來自客戶的數(shù)據(jù)recvfrom()sendto()數(shù)據(jù)處理服務(wù)員數(shù)據(jù)(請求)數(shù)據(jù)(回答)Socket()sendto()recvfrom()客戶bind()b、面向連接協(xié)議(如TCP)的SOCKET系統(tǒng)調(diào)用流程框圖Listen()Socket()Bind()等待來自客戶的連接請求accept()send()recv()數(shù)據(jù)處理服務(wù)員建立連接數(shù)據(jù)(請求)數(shù)據(jù)(回答)sen
4、d()Socket()connect()recv()客戶實驗步驟:使用UDP協(xié)議的無連接客戶-服務(wù)員程序設(shè)計。根據(jù)實驗原理中介紹的內(nèi)容,設(shè)計一個無連接的客戶-服務(wù)員系統(tǒng),實現(xiàn)二者之間的數(shù)據(jù)傳遞。實驗程序:客戶端程序:#include #include #define SERV_UDP_PORT 8888 /*服務(wù)員進程端口號,視具體情況而定*/#define CLIENT_UDP_PORT 8080#define SERV_HOST_ADDR 193.169.1.41 /*服務(wù)員地址,視具體情況而定*/#define CLIENT_HOST_ADDR 193.169.1.42#define S
5、ERVER_ADD 0 xc1a90134#define CLIENT_ADD 0 xc1a90133#pragma comment(lib,ws2_32.lib)/* 宏定義用來打印錯誤消息*/#define PRINTERROR(s)fprintf(stderr,n%: %dn, s, WSAGetLastError()/數(shù)據(jù)報通信的客戶端子程序 /void DatagramClient(short nPort)SOCKET theSocket;/*創(chuàng)建一個數(shù)據(jù)報類型的socket*/theSocket = socket(AF_INET,/ 地址族SOCK_DGRAM, / socket類
6、型IPPROTO_UDP);/ 協(xié)議類型:UDP/*錯誤處理*/if (theSocket = INVALID_SOCKET)PRINTERROR(socket();return;/*填寫客戶端地址結(jié)構(gòu)*/SOCKADDR_IN saClient;saClient.sin_family = AF_INET;saClient.sin_addr.s_addr = inet_addr(CLIENT_HOST_ADDR); / 由WinSock指定地址saClient.sin_port = htons(nPort); / 客戶端進程端口號/* 將客戶端地址與已創(chuàng)建的socket綁定*/int nRet
7、;nRet = bind(theSocket,/ Socket 描述符(LPSOCKADDR)&saClient, / 客戶端地址sizeof(struct sockaddr)/地址長度);/*錯誤處理*/if (nRet = SOCKET_ERROR)PRINTERROR(bind();closesocket(theSocket);return;SOCKADDR_IN saServer; char szBuf1024;int nLen;saServer.sin_family = AF_INET;saServer.sin_addr.s_addr = inet_addr(SERV_HOST_AD
8、DR);saServer.sin_port = htons(SERV_UDP_PORT);nLen = sizeof(saServer);while(1)/* 發(fā)送數(shù)據(jù)給服務(wù)器 */strcpy(szBuf,From the client);scanf(%s,&szBuf);sendto(theSocket,szBuf,strlen(szBuf),0,(LPSOCKADDR)&saServer,nLen);/system(pause);/* 接收來自服務(wù)器端的數(shù)據(jù)*/memset(szBuf,0,sizeof(szBuf);nRet = recvfrom(theSocket,szBuf,siz
9、eof(szBuf),0,(LPSOCKADDR)&saServer,&nLen);if(szBuf0!=0)printf(nData received: %sn,szBuf);/while(1)/ /*準(zhǔn)備接收數(shù)據(jù)*/memset(szBuf, 0, sizeof(szBuf);/nRet = recvfrom(theSocket,/ 已綁定的socket/szBuf,/ 接收緩沖區(qū)/sizeof(szBuf),/ 緩沖區(qū)大小/0,/ Flags/(LPSOCKADDR)&saClient,/ 接收客戶端地址的緩沖區(qū)/&nLen);/ 地址緩沖區(qū)的長度/*打印接收到的信息*/printf(n
10、Data received: %s, szBuf);/* 發(fā)送數(shù)據(jù)給客戶端*/ strcpy(szBuf, From the Server);/sendto(theSocket,/ 已綁定的socket/szBuf,/ 發(fā)送緩沖區(qū)/strlen(szBuf),/ 發(fā)送數(shù)據(jù)的長度/0,/ Flags/(LPSOCKADDR)&saClient,/ 目的地址/nLen);/ 地址長度/ closesocket(theSocket);return;/數(shù)據(jù)報客戶端主程序 /void main()WORD wVersionRequested = MAKEWORD(1,1);WSADATA wsaData;int nRet;short nPort;nPort = CLIENT_UDP_PORT;/* 初始化Winsock*/nRet = WSAStartup(wVersionRequested, &wsaData);if (wsaData.wVersion != wVersionRequested)fprintf(stderr,n
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年馬拉松比賽合作協(xié)議書
- 人教版地理八年級下冊6.4《祖國的首都-北京》聽課評課記錄2
- 【部編版】七年級歷史上冊 《中國早期人類的代表-北京人》公開課聽課評課記錄
- 豬欄承包協(xié)議書(2篇)
- 生產(chǎn)工人中介合同(2篇)
- 人教版數(shù)學(xué)九年級上冊《構(gòu)建知識體系級習(xí)題訓(xùn)練》聽評課記錄1
- 北師大版道德與法治九年級上冊4.1《經(jīng)濟發(fā)展新階段》聽課評課記錄
- 八年級思想讀本《5.1奉法者強則國強》聽課評課記錄
- 五年級上冊數(shù)學(xué)聽評課記錄《4.2 認識底和高》(3)-北師大版
- 湘教版數(shù)學(xué)八年級上冊2.3《等腰(邊)三角形的判定》聽評課記錄
- 城市隧道工程施工質(zhì)量驗收規(guī)范
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024年參考題庫含答案解析
- 五 100以內(nèi)的筆算加、減法2.筆算減法 第1課時 筆算減法課件2024-2025人教版一年級數(shù)學(xué)下冊
- 2025江蘇太倉水務(wù)集團招聘18人高頻重點提升(共500題)附帶答案詳解
- 2024-2025學(xué)年人教新版高二(上)英語寒假作業(yè)(五)
- 2025年八省聯(lián)考陜西高考生物試卷真題答案詳解(精校打印)
- 2025脫貧攻堅工作計劃
- 借款人解除合同通知書(2024年版)
- 《血小板及其功能》課件
- 江蘇省泰州市靖江市2024屆九年級下學(xué)期中考一模數(shù)學(xué)試卷(含答案)
- 沐足店長合同范例
評論
0/150
提交評論