




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、華中科技大學電信學院2015 實驗課程簡介實驗課程簡介 l課程內容 l共四個實驗,每個實驗4個學時 lWindows Socket 編程 l分組觀察與交換機 l路由協(xié)議分析 lTCP協(xié)議分析 l課程安排 l3、7、11、13周 9-12節(jié)課 南一樓東204 需簽到 l獨立完成實驗報告,在實驗隔周理論課堂上提交 2 實驗一 Windows Socket 編程 華中科技大學電信學院2015 Windows Socket Windows Socket 編程編程 l實驗目的 lSocket編程 l 常用API l實驗軟件 l實驗內容 4 實驗目的實驗目的 l通過編程了解 Client/Server 結
2、構的網絡通信模型 l掌握Socket機制的工作原理 l掌握基于 Client/Server 結構的 Windows Socket TCP/UDP程序設計方法 5 Client-Server Client-Server 結構結構 l在TCP/IP網絡環(huán)境下,不同主機上的兩個應用程 序通信普遍采用客戶端-服務器模型 (client-server architecture, C/S) lClient在需要服務時向server提出申請 lServer等待client提出請求并予以響應 lServer始終運行,監(jiān)聽網絡接口 l收到client請求啟動服務進程響應客戶, 同時繼續(xù)監(jiān)聽服務窗口,保證后續(xù)的
3、client也能及時得到服務 6 背景知識背景知識Windows SocketWindows Socket是什么?是什么? lWindows Sockets是Microsoft Windows的網絡程序設計接口 lSocket于1981年在BSD4.1 UNIX中 提出 l客戶端/服務器模型 7 80年代初,美國國防部高級研究計劃局 (ARPA)給UC Berkeley提供了資金,讓他們 在UNIX操作系統(tǒng)下實現TCP/IP協(xié)議。在這 個項目中,研究人員為TCP/IP網絡通信開 發(fā)了一個API(應用程序編程接口),這個API 稱為Socket接口(套接字)。今天Socket接口 是TCP/IP
4、網絡最為通用的API,也是在 Internet上進行應用開發(fā)最為通用的API。 90年代初,由Microsoft聯合其他幾家公 司共同制定了一套Windows下的網絡編程 接口,即Windows Socket規(guī)范。它是 Berkeley Socket的重要擴充,主要是增加了 一些異步函數,并增加了符合Windows消 息驅動特性的網絡事件異步選擇機制。 WinSock規(guī)范是一套開放的、支持多種協(xié)議 的Windows下的網絡編程接口。從1991年 的1.0版到1995年的2.0.8版,經過不斷完善, 已成為Windows網絡編程的事實上的標準。 一個本地的, 應用程序創(chuàng)建的, 操作系統(tǒng)控制的接口
5、。 通過該接口 應用進程可以 從另一個應用進程 發(fā)送或者接收消息 socket SocketSocket套接字套接字 l目標:學習如何建立客戶端/服務器應用程序,使 用套接字進行通信 l套接字(socket): 應用進程之間的接口,實現端到 端的傳輸協(xié)議 8 Internet 由操作 系統(tǒng)控制 由應用 開發(fā)者 控制 傳輸層 應用層 物理層 數據鏈路層 網絡層 進程 傳輸層 應用層 物理層 數據鏈路層 網絡層 進程 套接字 Socket是應用層與TCP/IP協(xié)議棧通信的中間軟件抽象層 WinSock DLLWinSock DLL lWinSock與操作系統(tǒng)的關系 9 應用程序 1應用程序 2 網
6、絡編程接口 如 WinSock API 網絡通信協(xié)議 如 TCP/IP協(xié)議 操作系統(tǒng) 如 Windows 物理通信介質 動態(tài)鏈接庫 16位版:WINSOCK.DLL 32位版:WSOCK32.DLL TCPTCP套接字編程套接字編程 l服務器做好準備 l服務器進程必須首先運行 l服務器必須先創(chuàng)建socket等待 處理客戶端的連接請求 l客戶端與服務器的聯系 l創(chuàng)建客戶端本地的TCP socket l指明服務器進程的IP地址和 端口號 l當客戶端創(chuàng)建socket后,客戶 端的TCP socket與服務器TCP socket建立連接 10 l服務器收到客戶端連接請 求后,創(chuàng)建新的socket用 來
7、與客戶端通信 l允許服務器與多個客戶端通 信 l源端口號用來識別客戶端 TCPTCP協(xié)議提供了客戶協(xié)議提供了客戶 端和服務器之間可靠端和服務器之間可靠 的,按次序的字節(jié)流的,按次序的字節(jié)流 傳輸傳輸 TCPTCP套接字編程套接字編程 l如同中國移動的10086服務 l調用socket()建立一個套接口 (移動建立好一個電話 總機) lbind()將該接口和本地IP地址和Port綁定 (設定總機 號為10086) llisten()讓套接口做好偵聽準備 (隨時準備接聽電話) l客戶在套接口建立起來之后,便可調用connect()連 接服務器指定的Port (用戶可撥打10086要求服務) l服務
8、器調用accept()來接收客戶的連接請求 (一旦有 電話就接起) l服務器收到請求后,建立新的socket來對此連接服 務,原來的socket回到監(jiān)聽等待狀態(tài) (總機接電話 后轉某分機服務,本身繼續(xù)等待新的電話) l連接建立后,send()和recv()來發(fā)送和接收數據 (客 戶與客服對話) l數據傳送結束,調用closesocket()關閉套接口 (結束 請掛機) 11 常用常用APIAPI lAPI (Application Programming Interface) 應用程序接口 lDLL裝載 lWinSock服務由動態(tài)鏈接庫WinSock DLL提供,它完成 WinSock的初始化
9、任務,協(xié)商WinSock的版本支持,并分 配必要的資源。在使用WinSock API之前,必須調用 WSAStartup函數對其進行初始化。 lint WSAStartup(WORD v, (LPWSADATA) int WSAreturn; struct hostent *hp; struct sockaddr_in sin; char *host; char bufMAX_LINE; int s; int len; 15 Socket編 程庫文件 示例示例: C: C客戶端客戶端 (TCP) (TCP) if (argc=2) host = argv1; else fprintf(stde
10、rr, usage: simplex-talk hostn); exit(1); WSAreturn = WSAStartup(0 x101, if(WSAreturn) fprintf(stderr, simplex-talk: WSA error.n); exit(1); /* translate host name into peers IP address */ hp = gethostbyname(host); if (!hp) fprintf(stderr, simplex-talk: unknown host: %sn, host); exit(1); /* build addr
11、ess data structure */ memset(char *) memcpy(char *) sin.sin_family = AF_INET; sin.sin_port = htons(SERVER_PORT); 16 將遠程主機的名稱 轉換成IP地址 參數初始化 程序參數 處理 WinSock的初始化 示例示例: C: C客戶端客戶端 (TCP) (TCP) /* active open */ if (s = socket(PF_INET, SOCK_STREAM, 0) 0) perror(simplex-talk: socket); exit(1); if (connect(
12、s, (struct sockaddr *) close(s); exit(1); fprintf(stderr, client is connecting to %sn, host); /* main loop: get and send lines of text */ while (fgets(buf, sizeof(buf), stdin) bufMAX_LINE-1 = 0; len = strlen(buf) + 1; send(s, buf, len, 0); WSACleanup(); return 1; 17 創(chuàng)建 客戶端socket 從屏幕讀取 字符串 連接服務器 示例示例
13、: C: C服務器服務器(TCP)(TCP) #include #include #include #include #define SERVER_PORT 5432 #define MAX_PENDING 5 #define MAX_LINE 256 int main() WSADATA WSAData; int WSAreturn; /* server address */ struct sockaddr_in sin; struct sockaddr_in remote; char bufMAX_LINE; int len; int s, new_s; WSAreturn = WSASt
14、artup(0 x101, if(WSAreturn) fprintf(stderr, simplex-talk: WSA error.n); exit(1); 18 Socket編 程庫文件 WinSock的初始化 示例示例: C: C服務器服務器(TCP)(TCP) /* build address data structure */ memset(char *) sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(SERVER_PORT); /* setup passive op
15、en */ if (s = socket(PF_INET, SOCK_STREAM, 0) 0) perror(simplex-talk: socket failed.); exit(1); if (bind(s, (struct sockaddr *) exit(1); printf(server is ready in listening .n); listen(s, MAX_PENDING); /* wait for connection, then receive and print text */ while(1) len = sizeof(struct sockaddr_in); if (new_s = accept(s, (struct sockaddr *)&remote, &len) compilerlinker settings下導入相 應lib庫 lCodeBlocksMinGWlib libwsock32.a libws2_32.a 26 實驗內容實驗內容 l運行simplex-talk例程,理解代碼并觀察現象 l修改simplex-talk,編制duplex-talk程序,支持 client和server的雙向通信 l利用windows時間函數,編制簡單的定時器, 模擬client和server之間的sto
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學圓柱知識課件
- 新型儲能行業(yè)未來發(fā)展與市場潛力分析
- 消防安全維保課件
- 人教版七年級上冊生物 3.2.3開花結果教學設計
- 食品加工企業(yè)食品安全管理全指南
- 《嬉游曲》(教案)-2024-2025學年人音版(五線譜)音樂五年級上冊
- 電商產業(yè)園發(fā)展前景與市場分析報告
- 冬奧知識圖文課件
- 小學美術嶺南版六年級下冊第一單元 古代傳說與科幻故事中的藝術1. 古代傳說中的藝術形象教學設計及反思
- 一級注冊計量師考試題目解析2024
- 國家森林公園景區(qū)信息化建設規(guī)劃方案
- 盤扣式腳手架安全管理課件
- 大學生應征入伍學費補償申請表
- 6-4協(xié)同進化與生物多樣性的形成教案
- 2025年燒烤店創(chuàng)業(yè)計劃書
- 光伏強條執(zhí)行計劃
- 《立體裁剪電子教案》課件
- 2024-2030年中國高等教育行業(yè)發(fā)展策略及投資改革創(chuàng)新模式分析報告
- 生產安全事故報告及處置制度模版(3篇)
- 《教育系統(tǒng)重大事故隱患判定指南》知識培訓
- 牡蠣養(yǎng)殖及深加工項目可行性研究報告
評論
0/150
提交評論