版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、網(wǎng)絡通信程序設計編撰閩江學院計算機實驗教學中心印制3目 錄實驗一 windows簡單程序設計 1實驗二 netbios網(wǎng)絡程序設計 3實驗三 基于netbios數(shù)據(jù)報通信程序設計 4 實驗四 基于netbios會話通信程序設計 6實驗五 winsock網(wǎng)絡信息查詢函數(shù)的應用 8實驗六 winsock會話通信程序設計(1) 9實驗七 winsock會話通信程序設計(2) 11實驗八 winsock多播與廣播通信程序設計 12實驗九 多線程網(wǎng)絡編程 14實驗十 winsock綜合應用編程 15實驗一 windows簡單程序設計實驗目的了解在vc中windows sdk應用程序的開發(fā),熟悉win32
2、 application和win32 console application的程序結構實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+實驗內容 編寫程序,要求程序能實現(xiàn)對字符串的處理; 編寫一個win32 application類型的windows窗口程序。實驗步驟(1)win32 console程序開發(fā) 運行microsoft visual c+ 創(chuàng)建工程:選擇菜單“file”“new”,在打開的對話框中,切換到“projects”標簽下,并選擇“win32 console application”作為工程類型,分別在project name和location文本框中輸入工程的
3、名字和位置(可自行定義),單擊“ok”完成工程的創(chuàng)建。 編寫代碼實現(xiàn):輸入一串,比較字符串是否為“exit”,是則退出程序,否則輸出串長度。循環(huán)輸入第二個串,重復上述處理(請給出程序代碼)。 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行結果。(2)win32 application窗口應用程序開發(fā) 程序結構:l 注冊窗口類l 創(chuàng)建窗口l 顯示和更新窗口l 創(chuàng)建消息循環(huán)l 處
4、理消息 創(chuàng)建工程:同上,注意這里要選擇“win32 application”作為工程類型 編寫源程序:程序可參考書上p9p11,書上源程序存在部分錯誤,修正如下:l 添加兩個頭文件:windows.h , stdio.hl 在winmain函數(shù)的實現(xiàn)程序前添加一段代碼用于聲明過程函數(shù):long far pascal mainwndproc(hwnd hwnd,uint message,wparam wparam,lparam lparam);l 在winmain函數(shù)的實現(xiàn)程序中的變量定義部分增加一個變量申明:hwnd ghwndmain;l 書上第14行wc.hbrbackground=get
5、stockobject(white_brush)修改為wc.hbrbackground=(hbrush)getstockobject(white_brush)l 在注釋“顯示窗口”下面增加一行,添加一句更新窗口的代碼:updatewindows(ghwndmain);l 在mainwndproc函數(shù)的實現(xiàn)程序中將窗口顯示消息處理部分的代碼(這部分有3行代碼)修改如下:case wm_paint: /窗口顯示消息處理hdc hdc;paintstruct ps;hdc=beginpaint(hwnd,&ps);textout(hdc,0,0,這是我的第一個windows程序,strlen(這是我
6、的第一個windows程序);endpaint(hwnd,&ps);break; 形成目標程序 運行程序結果記錄與分析 第一個程序在屏幕上輸出的結果是? 第二個程序運行的正確結果是一個標準的windows窗口,請問該窗口的標題是什么?窗口區(qū)的背景是什么顏色?并寫出窗口顯示的文字內容。思考題 windows sdk應用程序有哪兩種工程類型?它們分別以什么函數(shù)作為自己的入口點的?開發(fā)windows的窗口程序應該選擇哪種工程類型呢? 在windows程序中,winmain函數(shù)主要完成哪些操作,對消息的處理由哪個函數(shù)完成?實驗二 netbios網(wǎng)絡程序設計實驗目的了解在vc中win32 console
7、 application的程序結構,編寫網(wǎng)絡應用程序實驗內容 編寫一個win32 console 程序,初始化netbios。 改進初始化netbios程序,讀出系統(tǒng)所有的lana編號,并復位各網(wǎng)卡上的netbios。實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+實驗步驟(1)win32 console程序開發(fā),初始化netbios 運行microsoft visual c+ 創(chuàng)建工程:選擇菜單“file”“new”,在打開的對話框中,切換到“projects”標簽下,并選擇“win32 console application”作為工程類型,分別在project name和lo
8、cation文本框中輸入工程的名字和位置(可自行定義),單擊“ok”完成工程的創(chuàng)建。 創(chuàng)建c+ source file ,編寫程序 (程序可參考書上p33p34): 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行結果。(2)改進初始化netbios程序 編寫源程序:對(1)的程序進行改造 形成目標程序(同上) 運行程序結果記錄與分析 第一個程序運行后輸出什么? 第二個程序運行
9、后輸出什么,與第一個程序相比有什么意義?思考題系統(tǒng)的lana編號個數(shù)與什么有關,復位netbios都能成功嗎,不成功的原因是什么?運行加名字和刪除名字的程序(程序可參考書上p35p36),若注冊成功,輸出對應的名字編號。實驗三 基于netbios數(shù)據(jù)報通信程序設計實驗目的掌握如何在netbios接口上開發(fā)數(shù)據(jù)報通信程序,并分析一對一與一對多通信。實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c實驗內容創(chuàng)建兩個應用程序:“abc1”和“xyz1”,其中“abc1”負責數(shù)據(jù)報的發(fā)送,而“xyz1”負責接收。具體通信過程如下:當用戶從鍵盤上輸入一個字符串后,發(fā)送程序“a
10、bc1”就將該字符串作為數(shù)據(jù)報直接發(fā)送給接收方“xyz1”,接收方在收到一個數(shù)據(jù)報后,將收到的字符串顯示在屏幕上,如果用戶輸入的是“exit”,則雙方結束通信,程序退出。 對的程序進行改造以實現(xiàn)組播通信,其中多播組名為“group1”.實驗步驟(1)簡單點對點數(shù)據(jù)報通信 程序流程圖:resetncb()addname()datagramsend()deletename()resetncb()addname()datagramrecv()deletename()發(fā)送數(shù)據(jù)報abc1xyz1 編寫源程序:(程序可參考書上p38p42) 加文件頭#include #pragma comment(lib
11、,netapi32.lib) 或者 設置:vc里面,菜單 project - settings - link 里面選擇 general 在object/library moduless一欄里面添加netapi32.lib 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行結果。(2)組播通信程序設計 只需對(1)的程序進行簡單修改即可實現(xiàn),關鍵是增加組名的注冊(程序如下)。uch
12、ar addgroupname(char *name,uchar lana,uchar *namenum) ncb ncb; memset(&ncb,0,sizeof(ncb); ncb.ncb_command=ncbaddgrname; ncb.ncb_lana_num=lana; strcpy(char *) ncb.ncb_name,name); netbios(&ncb); *namenum=ncb.ncb_num; return (ncb.ncb_cmd_cplt);該應用程序的測試請在局域網(wǎng)內的多臺主機上實現(xiàn)。結果記錄與分析要求:至少測試三組數(shù)據(jù),并做好相關的記錄和分析思考題1)如
13、何對上述通信過程作些修改,以實現(xiàn)雙向通信(即abc既能發(fā)送數(shù)據(jù)給xyz,也能接收xyz傳給它的數(shù)據(jù)),請畫出它們的通信模型,并給出實現(xiàn)代碼。2)如何對上述通信過程作些修改,以實現(xiàn)廣播通信。(程序可參考書上p43p47)實驗四 基于netbios會話通信程序設計實驗目的掌握如何在netbios接口上建立會話,實現(xiàn)面向連接的可靠通信方式。實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c實驗內容服務器方:服務器進程使用ncblisten命令偵聽客戶進程的連接請求,當客戶進程的連接請求到來時,響應并建立會話,緊接著向客戶方發(fā)送一個“welcome to server!”的
14、消息,芮后,服務器進程進入循環(huán)接收等待,每收到一個客戶進程發(fā)來的數(shù)據(jù),便將其顯示,然后繼續(xù)等待接收下一個數(shù)據(jù)。當客戶進程拆除會話時,服務器進程隨即退出循環(huán),等待下一次的連接請求。客戶方:客戶進程使用ncbcall命令向指定服務器發(fā)出連接請求,會話建立后,緊接著設置接收。當收到服務器發(fā)來的“welcome to server”消息后,客戶進程進入循環(huán)發(fā)送狀態(tài),用戶通過鍵盤每鍵入一個字符串,便通過指定的會話鏈路將該字符串發(fā)送到服務器方,然后等待用戶發(fā)送下一個數(shù)據(jù)。當用戶鍵入的是“exit”時,客戶進程拆除會話,退出循環(huán),結束本次會話。實驗步驟resetncb()addname()listen()d
15、eletename()resetncb()addname()call()deletename()建立會話連接服務器客戶機hangup()recv()send()send()welcome to server!發(fā)送用戶數(shù)據(jù)給服務器關閉會話用戶輸入“exit”hangup() 程序流程圖:sendrecv() 編寫源程序:(程序可參考書上p49p55) 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以
16、便核查相應指令的運行結果。結果記錄與分析要求:至少測試三組數(shù)據(jù),并做好相關的記錄和分析實驗五 winsock網(wǎng)絡信息查詢函數(shù)的應用實驗目的winsock主要通過三類查詢函數(shù)(主機信息查詢、網(wǎng)絡信息查詢和套接字地址信息查詢)來獲取網(wǎng)絡信息。通過本實驗,要求熟練掌握幾個winsock基本函數(shù)的使用: winsock初始化函數(shù):wsastartup()和wsacleanup() 字節(jié)順序轉換函數(shù):htons()、htonl()和ntohs()、ntohl() 地址轉換函數(shù):inet_addr()和inet_ntoa() 主機信息查詢函數(shù):gethostbyname()和gethostbyaddr()
17、實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c 實驗內容編寫程序實現(xiàn)如下信息的查詢: 已知端口號8080,輸出其網(wǎng)絡順序2字節(jié)值與主機順序2字節(jié)值; 已知ip地址,輸出其網(wǎng)絡順序4字節(jié)值; 輸入的是ip地址,則由ip地址查詢對應的計算機名或網(wǎng)絡名; 輸入的是計算機名,則由計算機名查詢該主機的ip地址;實驗步驟1.編寫源程序(請在此處給出程序代碼):2.形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。3.運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)
18、行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行結果。結果記錄與分析(1)查詢本機信息: 首先,利用windows自帶工具查詢本機的計算機名和ip地址,方法如下:l 打開“我的電腦”的“屬性”,選擇“計算機名”標簽可以獲取本機的計算機名;l 在命令提示符中鍵入ipconfig/all可以獲取本機的ip地址 并做好記錄。本機的計算機名:本機的ip地址: 運行程序,作如下測試:l 鍵入本機的計算機名,記錄屏幕上顯示的結果。l 鍵入本機的ip地址,記錄屏幕上顯示的結果。 結論:(2)查詢同網(wǎng)中其他主機的信息(至少選擇三臺不同的主機,重復步驟,請做好相關記錄): 查詢某主
19、機的計算機名和ip地址,方法同上。請記錄它的計算機名和ip地址。 運行程序,作如下測試:l 鍵入計算機名,記錄屏幕上顯示的結果。l 鍵入ip地址,記錄屏幕上顯示的結果。 根據(jù)測試的結果,回答下列問題:問題1:(2)中得到的數(shù)據(jù)與(1)中的一致嗎?問題2:除了計算機名和ip地址還可以查詢哪些信息,請你寫程序實現(xiàn)。(3)錯誤測試: 運行程序,分別輸入錯誤的(或不存在的、不在同一網(wǎng)絡中的)ip地址和計算機名,記錄屏幕上顯示的信息。你的程序對錯誤的處理正確嗎?實驗六 winsock會話通信程序設計(1)實驗目的學習如何利用會話套接字實現(xiàn)可靠的面向連接的通信過程。通過本實驗,要求熟練掌握幾個winsoc
20、k基本函數(shù)的使用: 基本winsock函數(shù):socket()、bind()、listen()、accept()、connect()、shutdown()、closesocket() winsock數(shù)據(jù)傳輸函數(shù):send()、recv()實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c實驗內容 設計一個winsock會話通信程序:服務器端程序在2000端口進行偵聽,并進入等待連接狀態(tài)??蛻舳藝L試與服務器端連接。連接一旦建立,服務器和客戶端之間就可以進行通信。客戶端提示輸入一個數(shù)字,比如輸入50,那么客戶端會從“data0”到“data49”發(fā)送50個字符串,輸入0退
21、出。 設計一個ftp小程序:服務器端程序在2000端口進行偵聽,并進入等待連接狀態(tài)??蛻舳藝L試和服務器端建立連接。連接一旦建立,就可以在服務器端和客戶段之間進行文件傳輸,程序里要求文件小于32kb??蛻舳颂崾据斎氪齻鞯奈募?,該文件名可以帶路徑,服務器端收到文件后,將其寫到相應位置。 注:服務器端使用的端口號為2000,客戶端使用的端口號為3000。socket()bind()connect()send()recv()closesocket()socket()bind()listen()accept()偵聽套接字連接套接字創(chuàng)建連接套接字recv()send()closesocket()clos
22、esocket()服務器實驗步驟 程序流程圖:客戶機 編寫源程序:(程序一參考書上8084頁,程序二參考書上8591頁) 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行結果。結果記錄與分析要求:至少測試三組數(shù)據(jù),并做好相關的記錄和分析思考題假設服務器端程序與客戶端程序分別運行在同一個局域網(wǎng)內的兩臺不同主機上,且已知服務器的主機名為“testserver”,服務器端使用的端口號
23、為2000,客戶端使用的端口號為3000,而客戶端不知道服務器的ip地址,試問這種情況下,客戶端應該如何連接服務器?客戶端的程序應該怎樣修改?請寫出修改部分的代碼。實驗七 winsock會話通信程序設計(2)實驗目的學習如何利用會話套接字實現(xiàn)可靠的面向連接的通信過程。通過本實驗,要求熟練winsock會話通信模式,并實現(xiàn)程序設計的靈活開發(fā)。實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c/.net實驗內容改造試驗五的程序(任選一),要求如下: 實現(xiàn)通信的雙向對話 增加形式多樣的窗口或其他界面來顯示通信數(shù)據(jù),使通信更加直接、容易、可視化 可模擬網(wǎng)絡聊天室或ftp工具
24、,設計相關功能或者選擇用c#、java等其他語言開發(fā)實驗步驟 程序流程圖(請改造)socket()bind()connect()send()recv()closesocket()socket()bind()listen()accept()偵聽套接字連接套接字創(chuàng)建連接套接字recv()send()closesocket()closesocket()服務器客戶機 參考程序:(程序一參考書上8084頁,程序二參考書上8591頁) 設計程序以實現(xiàn)相應功能(請附主要代碼) 運行程序,抓圖顯示運行的效果。結果記錄與分析要求:至少測試三組數(shù)據(jù),并做好相關的記錄和分析,請抓圖顯示運行的效果。思考題數(shù)據(jù)雙向傳輸
25、過程,是否出現(xiàn)數(shù)據(jù)不同步,該問題存在的原因,請查閱有關資料思考解決問題的辦法。實驗八 winsock多播與廣播通信程序設計實驗目的學習如何利用套接字實現(xiàn)兩種特殊的數(shù)據(jù)報通信多播和廣播。通過本實驗,要求掌握以下內容: 使用winsock實現(xiàn)廣播通信和多播通信的一般步驟 利用setsockopt()函數(shù)設置套接字選項:如何設置套接字的廣播屬性;如何加入或離開一個多播組。實驗環(huán)境操作系統(tǒng):windows2000/xp編程軟件:vc+/turbo c實驗內容 實現(xiàn)廣播通信:發(fā)送方的ip地址設為本機地址,在端口3000上進行廣播發(fā)送,發(fā)送50個數(shù)據(jù),數(shù)據(jù)內容分別為data0data49。接收方在端口20
26、00進行數(shù)據(jù)的接收。 實現(xiàn)ip多播:接收方首先加入一個指定的組“”,發(fā)送方只是將數(shù)據(jù)發(fā)給多播組,本身并不接受多播組內成員發(fā)送的數(shù)據(jù)。接收方利用一個循環(huán)結構,等待進入的數(shù)據(jù)。 實驗步驟 winsock廣播通信的一般步驟: 1)創(chuàng)建廣播套接字a) 創(chuàng)建數(shù)據(jù)報套接字:socket()b) 綁定數(shù)據(jù)報套接字于指定的地址和端口:bind()c) 通過套接字選項設置數(shù)據(jù)報套接字的廣播屬性:setsockopt()2)發(fā)送廣播消息:sendto()3)接收廣播消息:recvfrom() winsock多播通信的一般步驟:1)創(chuàng)建數(shù)據(jù)報套接字:socket()2)將套接字同本地的一個端口綁定在一起:bind()3)加入到指定的多播組:setsockopt()4)發(fā)送數(shù)據(jù):sendto()5)接收數(shù)據(jù):recvfrom() 編寫源程序(代碼略):(廣播通信的發(fā)送端程序參考書上98101頁,接收端程序可參考數(shù)據(jù)報通信程序中的接收程序;ip多播通信程序參考書上104110頁) 形成目標程序單擊菜單欄的“組建(b)”菜單下的“編譯”命令,進行編譯。在“輸出”窗口的“組建”標簽頁下查看是否存在編譯錯誤,若有,則進行調試。 運行程序單擊菜單欄的“組建(b)”菜單下的“執(zhí)行”命令,生成.exe文件。必要時,可在過程中設置斷點,以便核查相應指令的運行
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度車輛抵押貸款保險合同范本4篇
- 2025年自行車棚電氣設備安裝工程合同范本
- 2025年度國際公路貨物運輸時效保障合同
- 2025年度廣告創(chuàng)意策劃與執(zhí)行服務合同-@-5
- 2025年度環(huán)保污水處理設施建設劃線合同
- 2025年度互聯(lián)網(wǎng)企業(yè)廣告投放服務合同
- 會議場所租賃服務詳細合同(2024年版)版B版
- 2025年度化妝品環(huán)保包裝設計合作合同
- 2025年度海上旅游船員派遣合同模板
- 2025版石場租賃合同范本:石場安全生產(chǎn)責任書3篇
- 2025年度高端商務車輛聘用司機勞動合同模板(專業(yè)版)4篇
- GB/T 45107-2024表土剝離及其再利用技術要求
- 2025長江航道工程局招聘101人歷年高頻重點提升(共500題)附帶答案詳解
- 2025年黑龍江哈爾濱市面向社會招聘社區(qū)工作者1598人歷年高頻重點提升(共500題)附帶答案詳解
- 維吾爾醫(yī)優(yōu)勢病種
- 全國教學設計大賽一等獎英語七年級上冊(人教2024年新編)《Unit 2 Were Family!》單元教學設計
- 【獨家揭秘】2024年企業(yè)微信年費全解析:9大行業(yè)收費標準一覽
- 1-1 擁抱夢想:就這樣埋下一顆種子【2022中考作文最熱8主題押題24道 構思點撥+范文點評】
- 職業(yè)暴露與防護
- 酒店行業(yè)客源渠道分析
- AVL-CRUISE-2019-整車經(jīng)濟性動力性分析操作指導書
評論
0/150
提交評論