軟件設計實驗報告―B13011413陳超_第1頁
軟件設計實驗報告―B13011413陳超_第2頁
軟件設計實驗報告―B13011413陳超_第3頁
軟件設計實驗報告―B13011413陳超_第4頁
軟件設計實驗報告―B13011413陳超_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2015/2016 學年 第 2 學期軟件設計實驗報告模塊名稱 VC+ 專業(yè) 廣播電視工程 學生班級 B 學生學號 B 學生姓名 陳超 指導教師 余雪勇 設計題目1. 熟悉VC+6.0的使用環(huán)境2. 獲取計算機的名稱和IP地址3. 基本C/S模式的通信實驗4. 典型網絡應用設計5. 綜合網絡應用設計任務要求1熟悉VC+6.0的使用環(huán)境:掌握最基本的基于控制臺、對話框、單文檔及多文檔界面的項目創(chuàng)建方法;掌握項目中的文件構成及作用,學會在程序文件中增加功能代碼的方法;掌握程序的生成和調試方法。2.獲取計算機的名稱和IP地址實驗:掌握在程序中獲取網絡參數的方法:獲取計算機的名稱和IP地址;獲取計算機

2、的子網掩碼;獲取計算機的DNS設置;獲取計算機的網卡地址; 3.基本C/S模式的通信實驗編寫程序實現下述功能:一個UDPClient/Server模式的通信程序;一個TCP Client/Server模式的通信程序基本要求:能輸入計算機的IP地址和端口號,能輸入、發(fā)送文本信息和顯示接受的文本信息。4.典型網絡應用程序設計4.1聊天室設計:完成一個文本聊天室程序的設計。4.2簡單的瀏覽器的實現:設計一個簡單的瀏覽器5.綜合網絡應用設計:房產報修網絡化管理實驗設備及軟件硬件:PC機一臺;軟件:VC+6.0;其他通用軟件工具同組人員學號及姓名無參考文獻1. 朱桂英、張元亮 Visual C+網絡編程

3、開發(fā)與實戰(zhàn) 清華大學出版社2. 姚領田等 MFC窗口程序設計 中國水利水電出版社3. 汪曉平、鐘軍 Visual C+網絡通信協議分析與應用實現 人民郵電出版社4. 曹衍龍Visual C+網絡通信編程實用案例精選(第二版)人民郵電出版社5. 雷斌、楊建華、黃超、何斌Visual C+ 6.0網絡編程技術人民郵電出版社6. 美David J.Kruglinski譯:希望圖書創(chuàng)作室MICROSOFT VISUAL C+ 6.0技術內幕 北京希望電子出版社一、獲取計算機IP地址等網絡參數1、 實驗目的程序能夠自動獲取計算機的名稱、IP地址、子網掩碼、DNS設置、網卡地址。2、 實驗內容及過程1.

4、啟動Visual C+6.0,在此IDE環(huán)境中單擊File/New菜單項,打開New對話框,然后單擊Projects選項卡,選擇“MFC AppWizardexe”一項。在對話框右上角的ProjectsName中填新工程的名字,然后選擇適當的目錄位置放置此新工程;新建一個MFC Appwizard(exe)工程,命名為B,選擇Dialog based框架,一定要包含Windows Sockets。2. 在工作區(qū)中選擇“ResourceView”選項卡,選擇Dialog,雙擊菜單控件的名字(IDD_B_DIALOG),右邊出現程序視圖的原始界面,在Dialog里創(chuàng)建應用程序框架,刪除對話框中的靜

5、態(tài)文本框,然后添加控件,選擇靜態(tài)文本框,用來顯示計算機名、IP地址等文字,然后對應添加編輯框,修改其屬性,將其ID分別修改為IDC_EDIT1IDC_EDIT7,然后進入ClassWizard,建立類向導,選擇Member Variables選項卡,為其添加成員變量m_tName,m_type,m_cardname,m_sDsMask,m_sDns,m_pMacAddr, m_sIPAddress;如下圖1.1。 圖1.1 添加成員變量3.添加按鈕用于查詢,修改其ID為IDC_BUTTON1,進 MFC classWizard,選擇Member Maps選項卡,再在Object Ids列表框中

6、選擇IDC_BUTTON1,選擇Messages列表框中的BN_CLICKED,點擊“Add Function”按鈕,增加一個函數,使用系統默認名“IDC_BUTTON1”,單擊“OK”;如下圖1.2。4.編寫程序代碼:OnButton1()中調用StartUp()函數來添加WINSOCK類庫,調用函數GetLocalHostName獲取主機名,函數GetIPAddress獲取IP地址,函數GetInfo獲取網卡信息,函數ParseData獲取適配器信息。點擊查詢按鈕,所獲信息均顯示在編輯框內。5.在工程-設置-連接-對象/庫模塊中加入對IPHLPAPI.LIB庫文件的支持。 圖1.2 添加成

7、員函數3、 實驗結果1.點擊查詢按鈕,獲取本機網絡參數顯示如下圖1.3圖1.3 獲取計算機的網絡配置信息4、實驗體會本實驗是在對前一階段熟悉VC6.0使用環(huán)境及對MFC的全面理解的基礎上完成的,開始時由于不理解MFC編程,以為只需要編寫代碼,所以出了很多錯誤,比如在新建工程時沒有選取Windows Sockets導致程序無法編譯,還有變量定義的類型一開始不熟悉總是忽略而選默認值,還有必須鏈接到IPHLPAPI.LIB庫文件不然會報錯等等細節(jié),這些基本注意點應牢牢掌握,才能更熟練地完成接下來的任務。 二、基于UDP模式的通信程序1、實驗目的通過Sockets編程,設計一個UDP的C/S通信程序,

8、實現點對點的通信,能編輯文本消息以及實現該消息的傳送。2、實現方法:UDP的Server和Client程序相同,采用相同的架構,Server服務端對本地終結點進行監(jiān)聽,客戶端同樣對相應終結點監(jiān)聽,直接向該終結點發(fā)送數據,便可進行通信,程序架構分為兩部分,一部分是對本地終結點的綁定和監(jiān)聽,另一部分是進行數據的通信。通信過程中,第一步初始化Winsock;第二步建立一個數據報類型的UDP套接字;第三步使用sendto函數進行通信;第四步關閉socket;程序流程圖如下圖2.1: 圖2.1 UDP通信程序流程圖3、實驗過程:1按之前詳述步驟建立一個新工程,取名為BUDP。2在resourceview

9、里的Dialog中創(chuàng)建應用程序框架,修改相應編輯或按鈕框的Object IDs,在MFC ClassWizard中建立類向導:添加變量m_disp,m_sip,m_sport,m_dip,m_dport,添加成員函數OnButton1,OnRadio1,OnRadio2。3.在工作區(qū)中選擇FileView選項卡,手動添加chatsock.cpp和mysocket.cpp和相對應的頭文件,并在程序代碼中引用這兩個頭文件。4.編寫源程序代碼4、實驗結果運行時需要打開兩個運行窗口并分別設置目的端口和源端口的端口號分別對應,選中UDP,并在編輯框里輸入文本信息,點擊“發(fā)送”按鈕,文本信息在另一個窗口中

10、顯示時,實現通信。1.UDP服務端建立如下圖2.2圖2.2 UDP服務端建立2.UDP客戶端連接如下圖2.3圖2.3 UDP客戶端連接3. UDP客戶端與服務端連接成功并進行聊天如下圖2.4 圖2.4 UDP客戶端與服務端連接成功并進行聊天5、實驗體會基于C/S模式的UDP模式的通信程序設計,是第一次嘗試基于socket套接字進行數據傳輸,因為對于socket流式傳輸原理的理解不夠深刻,在嘗試編寫過程中出現了大量error后,參考了許多相關mysocket類的實現與應用代碼,也逐步認識到套接字的使用方法;另外,在搭建Dialog框架的使用上,相對于上一個實驗,諸如可以修改編輯框文字的滾動格式等

11、有了更多的了解。此次設計的UDP通信一個很大的局限在于未設置關閉UDP連接按鈕及相應功能,需要進一步深刻理解夯實原理,探索實現。三、基于TCP模式的通信程序1、實驗目的使用Sockets編程,實現基于TCP的C/S模擬通信。2、實現方法:對Socket服務端采用用多線程框架,對每一個客戶端的連接分配一個子線程,程序采用默認端口,一旦運行便對端口開始監(jiān)聽,程序功能分為三部分,包括SocketServer的配置以及監(jiān)聽,數據的接收和數據的發(fā)送。程序界面有三個按鈕分別為發(fā)送、清空、關閉,消息函數分別為btnClientSend_Click、btnClear_Click、btnExit_Click。對

12、Socket客戶端,通過設置菜單設置連接的服務器IP,端口采用默認端口,簡單實現對服務器的連接和數據收發(fā)。程序流程圖如下圖3.1:圖3.1 TCP通信程序流程圖4、 實驗過程1.建立兩個新工程,分別取名為BTCPC和BTCPS。2.在工作區(qū)中選擇“ResourceView”選項卡,選擇Dialog,雙擊菜單控件的名字(IDD_BTCPS_DIALOG和IDD_BTCPC_DIALOG),右邊出現程序視圖的原始界面,使用控件添加Static,Button,Edict,Radio等控件,對每一個控件右鍵可編輯屬性修改ID和標題。3.在工具欄點擊查看-建立類向導,進入Massage Map選項卡,C

13、lass Name選擇BTCPSDlg(客戶端選擇BTCPCDlg),為控件添加事件處理函數。進入Member Varibles選項卡,為控件添加變量名。4.在工作區(qū)中選擇FileView選項卡,在BTCPCFiles中手動添加chatsock.cpp,chatsock.h,mysocket.cpp和mysocket.h,在BTCPSFiles中添加clisock.cpp,lstsocket.cpp,mysocket.cpp和對應的頭文件,并在程序代碼中引用這些文件。5.編寫相應函數代碼。4、實驗結果運行時需要打開兩個運行窗口并分別設置目的端口和源端口的端口號,先點擊TCP建立服務器,再點擊T

14、CPclient,并在編輯框里輸入文本信息,點擊“發(fā)送”按鈕,文本信息在另一個窗口中顯示時,實現通信。1.TCP服務器建立如下圖3.2 圖3.2 TCP服務器建立2. TCP客戶端與服務端連接成功如下圖3.3圖3.3 TCP客戶端與服務端連接成功3. TCP客戶端與服務端進行聊天如下圖3.4圖3.4 TCP客戶端與服務端進行聊天5、實驗體會經過TCP和UDP模式的通信程序設計,對TCP與UDP的通信原理與區(qū)別有了較為深刻的認識。相對于UDP通信,TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協議,其必須保證傳輸的數據無誤,因此在UDP基本架構上要用一個校驗和函數檢驗數據是否有錯誤,在接

15、收和發(fā)送時都要計算校驗和,UDP沒有可靠、有次序、不重復的保證。查找了一些參考資料及相關代碼發(fā)現,一般情況下TCP Socket 的數據發(fā)送和接收是調用send() 及recv() 這兩個函數來達成,而 UDP Socket則是用sendto() 及recvfrom() 這兩個函數,這兩個函數調用成功發(fā)揮發(fā)送或接收的資料的長度,否則返回SOCKET_ERROR,所以TCP的兩端每次收發(fā)數據前必須建立連接,協議本身也保證可靠有序,而UDP任何一方建立一個socket后就可以用這兩個函數收發(fā)數據,但并不關心對方是否存在并接受。對課本理論內容是一次極大地實踐與學習。四、基于Socket的文本聊天室設

16、計1、實驗目的利用WinSocket實現一個網絡聊天室。需要一個聊天服務器,它可以和很多客戶端進行通信,從而把來自不同的客戶的聊天信息轉交到所有其他的客戶端。這樣就形成了一個采用Client/Server結構的并可以多人同時在線的聊天室。2、實現方法在Internet上的聊天室程序一般都是以服務器提供服務端連接響應,使用者通過客戶端程序登錄到服務器,就可以與登錄在同一服務器上的用戶交談,這是一個面向連接的通信過程。因此,程序要在TCP/IP環(huán)境下,實現服務器端和客戶端兩部分程序。1)服務器端工作流程:服務器端通過socket()系統調用創(chuàng)建一個Socket數組后(即設定了接受連接客戶的最大數目

17、),與指定的本地端口綁定bind(),就可以在端口進行偵聽listen()。如果有客戶端連接請求,則在數組中選擇一個空Socket,將客戶端地址賦給這個Socket。然后登錄成功的客戶就可以在服務器上聊天了。2)客戶端工作流程:客戶端程序相對簡單,只需要建立一個Socket與服務器端連接,成功后通過這個Socket來發(fā)送和接收數據就可以了。流程圖如下圖4.1圖4.1 聊天室設計流程圖3、實驗過程:1.新建項目,命名為BChatRoom。2. 在工作區(qū)中選擇“ResourceView”選項卡,選擇Dialog,雙擊菜單控件的名字(IDD_BChatRoom _DIALOG),右邊出現程序視圖的原

18、始界面,使用控件添加Static,Button,Edit,IpAddress等控件,對每一個控件右鍵可編輯屬性修改ID和標題。3. 在工具欄點擊查看-建立類向導,進入Massage Map選項卡,Class Name選擇BChatRoomDlg,為控件添加事件處理函數。進入Member Varibles選項卡,為控件添加變量名。4. 在工作區(qū)中選擇FileView選項卡,在BChatRoomFiles中手動添加ClientSocket.cpp,ServerSocket.cpp,CMessg.cpp和對應的頭文件,并在程序代碼中引用這些文件。5.編寫相應函數代碼。4、實驗結果1聊天室服務端建立如

19、下圖4.2 圖4.2 聊天室服務端建立2.聊天室客戶端連接如下圖4.3 圖4.3 聊天室客戶端連接3. 聊天室客戶端與服務端連接成功并開始聊天如下圖4.4圖4.4 聊天室客戶端與服務端連接成功并開始聊天4.多站點連接進入聊天室并顯示相關提示信息如下圖4.5圖4.5 一個游客進入聊天室5、實驗體會由于程序較為復雜,在編寫過程中出現了很多問題,比如對于圖形界面的編程部分還未能熟練掌握和應用,因此在開始試驗之前應該做好充分的準備,熟練構想相關函數的功能,理清思路和畫好流程圖也是很有必要的,尤其是此類較為綜合型的設計,今后一定要吸取這些寶貴的經驗教訓,以便更深入的學習。另外,從運行結果來看,總體實現了

20、多人在線聊天功能,還未能進行用戶之間的一對一的聊天,有待進一步學習并完善。通過本課題的設計,可以比較深入的了解和掌握WINSOCK控件基本屬性、方法和事件,理解網絡聊天通信的概念,傳輸控制協議(TCP/IP)進行數據交流,初步掌握網絡聊天通信程序的設計方法。并能鞏固和擴展上課期間的學習內容,更好的適應將來社會的需求。五、簡單的瀏覽器的實現1、實驗目的通過MFC提供的CHTMLView類,開發(fā)一個簡單的瀏覽器,實現網頁瀏覽功能。2、實現方法 程序流程圖如下5.1圖5.1 瀏覽器程序流程圖3、實驗過程1.新建一個工程,命名為BBrowse,進入MFC AppWizard設置第一步。選擇應用程序型為

21、單文檔。并選擇“中文中國APPWZCHS.DLL”默認選項,單擊下一步按鈕,在MFC AppWizard設置第2步和第3步中使用其默認值,進入第4步。由于在WEB瀏覽器時需要增加一個WEB地址的對話框,因此在這里選擇Internet Explorer ReBars 作為工具欄的外觀,這樣應用程序將會自動的生成一個對話框;在第5步中不需要做任何修改,在最后一步中,需要修改圖類的基類,使之變成ChtmlView類,由于選擇了ChtmlView類作為該應用程序視圖類的基類,所以改程序已經有了一定的WEB瀏覽功能。然后再對菜單項和工具欄進行修改,使程序能夠實現所需要的功能。2.在工作區(qū)中選擇“Reso

22、urceView”選項卡,選擇Dialog,雙擊菜單控件的名字(IDR_MAINFRAME),右邊出現程序視圖的原始界面,增加Edit控件作為地址欄,并右鍵屬性修改ID和標題。選擇Menu菜單下的IDR_MAINFRAME,點擊“查看”下拉菜單中的空格,增加“前進”、“后退”按鈕,并賦ID名。3. 在工具欄點擊查看-建立類向導,進入Massage Map選項卡,Class Name選擇BBrowseDlg,為控件添加事件處理函數。進入Member Varibles選項卡,為控件添加變量名。4.編寫相應函數代碼。4、實驗結果 輸入 按下回車鍵,進入百度首頁,如圖5.2所

23、示:圖5.2 瀏覽器進入百度頁面5、實驗體會瀏覽器項目的設計較之前各項實驗有很大的不同,不僅表現在基于單文檔形式需要手動繪圖ToolBar,另外在項目的創(chuàng)建上基類必須選擇HtmlView,否則無法編譯,添加成員變量時應注意控件的屬性等。實驗過程中最終調試運行雖然沒有error,但發(fā)現地址欄前面的箭頭符號顯示成ToolBar中的第一個IDR_MAINFRAME,最終經過組建調試Run To cursor一步步排查,發(fā)現在代碼段的一個調用語句中確實出現錯誤,應將默認的第一個ToolBar改成自己繪制的。在瀏覽器的設計過程中,由于能力及需求分析上的局限,設計只實現了前進,后退功能,未有能力實現新建頁

24、面等功能。應在充分掌握的基礎上進行修改和完善,以便將理論和實踐更好地融會貫通。六、房產報修系統網絡化管理1、實驗目的基于socket套接字編寫MFC工程以實現房產報修系統網絡化管理。2、實驗內容及過程1.新建兩個工程,還是基于對話框模式和windows套接字,分別命名為Bbaoxius和Bbaoxiuc。2. 在工作區(qū)中選擇“ResourceView”選項卡,選擇Dialog,雙擊菜單控件的名字IDD_Bbaoxius_DIALOG(或IDD_Bbaoxiuc _DIALOG),右邊出現程序視圖的原始界面,使用控件添加Static,Button,Edit等控件,對每一個控件右鍵可編輯屬性修改I

25、D和標題。3. 在工具欄點擊查看-建立類向導,進入Massage Map選項卡,Class Name選擇BbaoxiusDlg,為控件添加事件處理函數。進入Member Varibles選項卡,為控件添加變量名。4. 在工作區(qū)中選擇FileView選項卡,在BbaoxiusFiles中手動添加ListenThread.cpp和對應的頭文件,并在程序代碼中引用這些文件。5.編寫相應函數代碼。3、實驗結果1.服務器建立連接如下圖6.1圖6.1 房產保修系統服務器建立2.客戶端連接填寫相應文字進行報修申請如下圖6.2 圖6.2 客戶端連接并填寫申請3.服務器端收到報修信息并反饋客戶端報修成功如下圖6

26、.3圖6.3 客戶端報修成功、服務器收到報修申請信息4、實驗小結這個實驗比較復雜,是在熟悉基于TCP/IP的socket設計的基礎上進行的綜合應用設計,題目寬泛,難度較大,經過需求分析與程序流程的構建初步確立房產報修系統的功能與實現方法。經過努力嘗試,客戶端連接服務器進行報修申請,服務器提供連接并收到相關消息匯總,初步實現了總體功能,由于沒有相關知識的支持,沒有進行數據庫這一塊的設計,所以信息的通信還僅僅停留在對話框中,與實際應用還存在一定差距,此外,在客戶端申請的三條報修信息出于人性化角度服務器端應能將三條信息空隔開顯示,避免疑義,但在修改代碼過程中一直出現報錯,沒有實現此項功能,今后仍需繼

27、續(xù)學習。七、課程設計小結此次本軟件設計不僅加深了對理論課的理解,掌握理論應用于實際的方法,也從很大程度上了解基于TCP/IP協議棧的Socket程序設計方法,是動手能力的一次極大提高。本次軟件設計總體內容是在熟悉VC+6.0的運行環(huán)境并掌握socket流式傳輸原理的基礎上應用Socket程序設計方法,設計完成典型的網絡應用及設計實現綜合的網絡應用系統。回想整整兩周的或辛苦獲激動的設計過程,有以下幾點認識和體會:1.在設計之前應做好充分的準備。為了更深入地了解本次實驗的要求和需要掌握的知識點,老師精心為我們準備了豐富的學習資源和可以下載資料的網站。在設計之初,看到題目覺得很陌生,雖然之前的程序設計有熟練使用過VC6.0及C+語言,但是此次設計的要求更高、范圍更廣、含義更深,MFC項目的創(chuàng)建以前更是無所涉及,無從下手,但想到老師提供了很多學習的資源,于是下載了PDF仔細閱讀,發(fā)現其對于本次軟件設計實驗很有幫助,能夠很詳細地一步

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論