互聯(lián)網(wǎng)原理與應用實驗報告_第1頁
互聯(lián)網(wǎng)原理與應用實驗報告_第2頁
互聯(lián)網(wǎng)原理與應用實驗報告_第3頁
互聯(lián)網(wǎng)原理與應用實驗報告_第4頁
互聯(lián)網(wǎng)原理與應用實驗報告_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 華南師范大學本科學生實驗報告 實驗課程:互聯(lián)網(wǎng)原理與應用 實驗名稱:SOCKET網(wǎng)絡程序設(shè)計一、實驗目標:a、進一步掌握UDP及TCP協(xié)議的工作原理b、掌握SOCKET編程的基本方法c、學習應用C語言與WinSock2進行簡單的無連接的網(wǎng)絡程序設(shè)計,實現(xiàn)網(wǎng)絡數(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)絡字節(jié)順序*/struct in_addr sin_addr; /*32位IP地址

2、,網(wǎng)絡字節(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) 輸入/輸出多路復用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ù)處理服務員數(shù)據(jù)(請求)數(shù)據(jù)(回答)Socket()sendto()recvfrom()客戶bind()b、面向連接協(xié)議(如TCP)的SOCKET系統(tǒng)調(diào)用流程框圖Listen()Socket()Bind()等待來自客戶的連接請求accept()send()recv()數(shù)據(jù)處理服務員建立連接數(shù)據(jù)(請求)數(shù)據(jù)(回答)sen

4、d()Socket()connect()recv()客戶實驗步驟:使用UDP協(xié)議的無連接客戶-服務員程序設(shè)計。根據(jù)實驗原理中介紹的內(nèi)容,設(shè)計一個無連接的客戶-服務員系統(tǒng),實現(xiàn)二者之間的數(shù)據(jù)傳遞。實驗程序:客戶端程序:#include #include #define SERV_UDP_PORT 8888 /*服務員進程端口號,視具體情況而定*/#define CLIENT_UDP_PORT 8080#define SERV_HOST_ADDR 193.169.1.41 /*服務員地址,視具體情況而定*/#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ù)給服務器 */strcpy(szBuf,From the client);scanf(%s,&szBuf);sendto(theSocket,szBuf,strlen(szBuf),0,(LPSOCKADDR)&saServer,nLen);/system(pause);/* 接收來自服務器端的數(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)/ /*準備接收數(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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論