使用C(或C++)語言編寫網路通訊模擬程式
實驗題目 |
綜合實驗 |
一、實驗目的 熟悉和掌握網路程式設計的基本方法和步驟;進一步理解 client/server 互動模式;加深學生對於網路協議概念的理解以及協議的設計和實現方法。
二、裝置與環境 微型計算機、Windows 系列作業系統 、Visual C++6.0軟體
三、實驗內容 使用C(或C++)語言編寫網路通訊模擬程式,它由 client 和 server 兩部分組成, client 和 server 之間的通訊基於 TCP 或者UDP協議,要求能夠實現客戶和伺服器端的互動對話。 具體: 1) 伺服器和客戶端有提示; 2) 服務啟動後處於監聽狀態等待客戶機連線,當有客戶連線時給出提示,並 顯示客戶IP地址,並給客戶端傳送問候訊息; 3) 客戶機端要求啟動後主動連線伺服器,也可以通過選單控制連線的時機, 連線成功後給出提出; 4)在通訊連線建立之後,客戶和伺服器雙方可以進行聯絡的訊息傳遞,直至一方傳送quit訊息,斷開連線。 5)要求介面儘量友好,功能儘量完善,可考慮增加功能選單,提高系統的互動性。 6) 對功能進行適當分解,用若干函式完成系統
四、實驗結果及分析 1、變數定義: (1)需要定義套接字型別變數,因為套接字存在於地址族中,可以將通過套接字通訊的程序的公有特性綜合在一起。套接字通常只與同一區域的套接字交換資料。Windows Sockets只支援AF_INET網路域,使用網際協議族通訊的程序使用該域。因此只有將資料轉換成Socket型別的資料才可以進行傳輸。
(2)定義地址結構體,用於儲存協議族、ip地址以及埠號。其中,在地址結構體sockaddr_in中的sin_family部分指代協議族,也用於存放協議族資訊,這一項在socket程式設計中只能是AF_INET,地址結構體sockaddr_in中的sin_addr部分用於儲存ip地址,而sin_port部分則用於儲存埠號
(3)定義雙位元組型數值Socket版本,這裡必須要提及MAKEWORD函式,MAKEWORD函式的作用是將兩個byte型別合併成一個雙位元組型,其中一個在高8位,另一個在低8位。將MAKEWORD函式合併成的雙位元組型值賦給雙位元組型數值sockVersion作為Socket版本。
(4)定義WSADATA型別的值,用來儲存返回的Sockets資料。WSADATA是一種資料結構。這個結構被用來儲存被WSAStartup函式呼叫後返回的Windows Sockets資料。
2、函式介紹: 在server程式中:
在client程式中:
|