freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于windows平臺的局域網(wǎng)聊天系統(tǒng)(編輯修改稿)

2024-12-18 15:00 本頁面
 

【文章內(nèi)容簡介】 用戶接口 )資源兩大部份,兩部份最后以 RC 編譯程序整合為一個完整的 EXE 文件。所謂 UI 資源是指功能菜單、對話框、程序圖標、光標形狀等等東西。這些 UI 資源的實際內(nèi)容(二進制代碼)系借助各種工具產(chǎn)生,并以各種擴展名存在,如 .ico .bmp .cur 等等。程序員必須在一個所謂的資源描述檔( .rc )中描述它們。 RC 編譯器( )讀取 RC 文件的描述后將所有 UI 資源文件集中制作出一個 .RES 文件,再與程序代碼結(jié)合在一起,這才是一個完整的 Windows 可執(zhí)行文件。 與控制臺程序 相同的是,一個 WIN32 程序也必須有一個程序入口點,但是在這兒它不再叫 main(),而叫做 WinMain(),當 WINDOWS 的 SHELL 檢測到用戶欲執(zhí)行一個 EXE 程序,就會調(diào)用加載器把程序進行加載,然后調(diào)用 C startup code,后者再調(diào)用WinMain(),程序的執(zhí)行就開始了, WinMain()函數(shù)的原型為: int CALLBACK WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow); 湖北經(jīng)濟學院本科畢業(yè)(設計)論文 8 圖 31 32 位 WINDOWS 程序的開發(fā)流程 下面程序必須進行必要的初始化工作-產(chǎn)生窗口,第一步是注冊一個窗口類:用API 函數(shù): RegisterClass(),而這個函數(shù)需要一個已經(jīng)定義好的系統(tǒng)結(jié)構(gòu): WNDCLASS,這個結(jié)構(gòu)里面定義了窗口的種種屬性,需要自己定義,但是許多屬性都有默認值。然后調(diào)用 CreateWindow()函數(shù)來產(chǎn)生具有上述定義屬性的已注冊窗口,但是需要注意的是它只是生成窗口,但并不顯示之,所以還需要調(diào)用一個函數(shù) ShowWindow()將它顯示在屏幕上,做完這些初始化工作以后,系統(tǒng) 將進入消息循環(huán): while (GetMessage(amp。msg, NULL, 0, 0)){ TranslateMessage(amp。msg)。 DispatchMessage(amp。msg)。} 當消息循環(huán)捕捉到消息以后將交由窗口函數(shù) WndProc()窗口函數(shù)進行相應的處理。這樣,一個基于消息事件驅(qū)動的 WIN32 程序的雛形就建立了起來。 MFC 框架 由上面的介紹可以看出,直接用 API 函數(shù)開發(fā)一個 WIN32 程序是相當麻煩的,有好多既定的重復性的工作要做,所以微軟就用 C++的類機制將絕大部分的 API 函數(shù)進行了封裝,構(gòu)成了類,并且將基本的流程也封裝在類機制下面,大大簡化了WIN32 開的的復雜性,尤其是在開發(fā)比較大型程序的時候這個便宜性更會得以體現(xiàn)。它就是 Microsoft Foundation Classes,簡稱為 MFC,可以說它是 VC開發(fā)環(huán)境的一個核心構(gòu)件。 MFC 構(gòu)架了一個龐大的類體系結(jié)構(gòu),在 時代就多達 189 個類,程序代碼湖北經(jīng)濟學院本科畢業(yè)(設計)論文 9 達 252 個文件, 58 個頭文件,共 10MB 之多, 時又多加了 29 個類,但是最為主干的是下面類結(jié)構(gòu)示圖所示的一些類: 圖 32 MFC 類框架主體 CObject 是 MFC 類庫的根類。 MFC 類庫包括: ( 1) CCmdTarget 類:是 CObject 類的子類,它是 MFC 庫中所有具有消息映射屬性的類的公共基類。它的子類有 CWinThread 類, CWnd 類、 CDocument 類,從 CCndTarget 類派生的類能在程序運行時動態(tài)創(chuàng)建對象,并處理命令消息。 ( 2) CWinThread 類:是 CCmdTarget 的子類。 CWinThread 是所有線程類的基類,封裝了應用程序操作的多線程功能。應用程序類 CWinApp 是 CWinThread 的子類,封裝了初始化、運行、終止應用程序的代碼。 ( 3) CWnd 類:窗口類,是 CcmdTarget 類的子類,從 CWnd 派生的類可以擁有自己的窗口,并對它進行控制。窗口框架類 CFrameWnd 和 CView 類是 CWnd 的子類,前者創(chuàng)建和維護窗口的邊框、菜單欄、工具欄、狀態(tài)欄,負責顯示和搜索用戶命令,后者負責為文檔提供一個或幾個視圖。視圖的作用是為修改、查詢文檔等任務提供 人機交互的界面。 ( 4)文檔類 CDocument 類:是 CCmdTarget 類的子類,負責封裝和維護文檔。文檔包括應用程序的工作成果或環(huán)境設置數(shù)據(jù)等,可以是程序需要保存的任何內(nèi)容。 CObject CWnd CDocument CwinThread CcmdTarge 湖北經(jīng)濟學院本科畢業(yè)(設計)論文 10 一個 MFC 應用程序并不直接操作上述類,而是以上述類為基類派生新的類,構(gòu)建 Windows 應用程序的基本框架。 構(gòu)建一個基于 MFC 框架的程序,可以使用 MFC 的向?qū)С绦颍紫纫靼?,一個基于 MFC 的程序可以有幾種類型:基于單文檔結(jié)構(gòu)的程序,基于多文檔結(jié)構(gòu)的程序以及基于對話框的應用程序,不同類型的程序具有不同 的程序?qū)傩?。使用其向?qū)б约翱丶幊蹋沟貌徽撌墙缑婢帉?,還是程序內(nèi)核設計,都更加的簡單。其中有合理的消息映射機制,有方便的運行時類型識別功能,更有文檔 /視圖結(jié)構(gòu)設計,文檔串行化功能等非常多的優(yōu)秀功能。 TCP/IP 協(xié)議及 WINDOWS SOCKETS 網(wǎng)絡編程接口 TCP/IP 協(xié)議簡介 ( 1) TCP/IP 協(xié)議 通常包含了一系列與 “TCP(傳輸控制協(xié)議) ”和 “IP(網(wǎng)際協(xié)議) ”有聯(lián)系的 網(wǎng)絡協(xié)議 ,它包括其它的協(xié)議,應用軟件,甚至網(wǎng)絡媒介。這些協(xié)議的示例是: UDP( User Datagram Protocol)協(xié)議、 ICMP( Inter Control Message Protocol)協(xié)議、 ARP(地址解析協(xié)議)和其他一些協(xié)議的協(xié)議組。應用的示例: tel(遠程登錄 )、 ftp(文件傳遞協(xié)議 )、 等。 ( 2)邏輯結(jié)構(gòu): 圖 33 邏輯結(jié)構(gòu) 湖北經(jīng)濟學院本科畢業(yè)(設計)論文 11 這是 TCP/IP 協(xié)議的分層結(jié)構(gòu)在互連網(wǎng)計算機上的表示,用互連網(wǎng)技術(shù)互相通信的每臺計算機都有這樣的分層結(jié)構(gòu)。這樣的分層結(jié)構(gòu)決定了計算機在 inter 上互相通信的方式。數(shù)據(jù)通過這樣的分層結(jié)構(gòu)從上層傳 到底層,然后通過網(wǎng)線把數(shù)據(jù)傳送出去。底層的水平線代表以太網(wǎng)網(wǎng)線, “O”代表收發(fā)器, “*”代表 IP 地址, “@”代表網(wǎng)址,理解這樣的分層結(jié)構(gòu)是理解 INTERNET 技術(shù)的基礎。 (3)本論文涉及到的協(xié)議: IP、 TCP IP( Inter Protocol)是 TCP/IP 的心臟,也是網(wǎng)絡層中最重要的協(xié)議。 IP 層接收由更低層(網(wǎng)絡接口層例如以太網(wǎng)設備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層 TCP 或 UDP 層;相反, IP 層也把從 TCP 或 UDP 層接收來的數(shù)據(jù)包傳送到更低層。 IP 數(shù)據(jù)包是不可靠的,因為 IP 并沒有做任何事情來確認數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。 IP 數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。 UDP( IP 協(xié)議號 17)是一個 無連接的 數(shù)據(jù)報協(xié)議。它是一個 “best effort”或者 “不可靠 ”協(xié)議 ——不是因為它特別不可靠,而是因為它不檢查數(shù)據(jù)包是否已經(jīng)到達目的地,并且不保證它們按順序到達。 UDP 的典型性應用是如流媒體(音頻和視頻等)這樣按時到達比可靠性更重要的應用,或者如 DNS 查找這樣的簡單查詢 /響應應用,如果需要建立可靠的連結(jié),哪么所作的額外工作將是不成比例 地大。本程序只應用于局域網(wǎng)中,局域網(wǎng)中的數(shù)據(jù)流傳輸?shù)目煽啃愿?,故選擇 UDP 協(xié)議。 WINDOWS SOCKETS 網(wǎng)絡編程接口概述 在網(wǎng)絡編程中最常用的方案便是 Client/Server (客戶機 /服務器 )模型。在這種方案中客戶應用程序向服務器程序請求服務。一個服務程序通常在一個眾所周知的地址監(jiān)聽對服務的請求,也就是說,服務進程一直處于休眠狀態(tài),直到一個客戶向這個服務的地址提出了連接請求。在這個時刻,服務程序被 驚醒 并且為客戶提供服務-對客戶的請求作出適當?shù)姆磻? 為了方便這種 Client/Server 模型的網(wǎng)絡編程, 90 年代初,由 Microsoft 聯(lián)合了其他幾家公司共同制定了一套 WINDOWS下的網(wǎng)絡編程接口,即 Windows Sockets 規(guī)范,它不是一種網(wǎng)絡協(xié)議 ,而是一套開放的、支持多種協(xié)議的 Windows 下的網(wǎng)絡編程接口?,F(xiàn)在的 Winsock 已經(jīng)基本上實現(xiàn)了與協(xié)議無關(guān),你可以使用 Winsock 來調(diào)用多種協(xié)議的功能,但較常使用的是 TCP/IP 協(xié)議。 Socket 實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有Socket 接口的計算機通信。應用程序在網(wǎng)絡上傳輸,接 收的信息都通過這個 Socket接口來實現(xiàn)。如下圖所示: 湖北經(jīng)濟學院本科畢業(yè)(設計)論文 12 圖 34 面向連接的套接字的系統(tǒng)調(diào)用圖 微軟為 Visual C++定義了 Winsock 類如 CAsyncSocket 類和派生于 CAsyncSocket 的 CSocket 類,它們簡單易用,我們當然 可以使用這些類來實現(xiàn)自己的網(wǎng)絡程序,但是為了更好的了解 Winsock API 編程技術(shù),本設計中將使用底層的 API 函數(shù)實現(xiàn) Winsock 平臺的即時通信工具。 在 VC 中進行 WINSOCK 的 API 編程開發(fā)的時候,需要在項目中使用下面的三個文件,否則會出現(xiàn)編譯錯誤。 (1) : 這是 WINSOCK API 的頭文件,需要包含在項目中。 (2) : WINSOCK API 連接庫文件。 (3) : WINSOCK 的動態(tài)連接庫,位于 WINDOWS 的安裝目錄下。 多線程編程技術(shù) 進程及線程概述 進程和線程都是操作系統(tǒng)的概念。進程是應用程序的執(zhí)行實例,每個進程是由私湖北經(jīng)濟學院本科畢業(yè)(設計)論文 13 有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進程在運行過程中創(chuàng)建的資源隨著進程的終止而被銷毀,所使用的系統(tǒng)資源在進程終止時被釋放或關(guān)閉。 線程是進程內(nèi)部的一個執(zhí)行單元。系統(tǒng)創(chuàng)建好進程后,實際上就啟動執(zhí)行了該進程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說 main 或 WinMain 函數(shù),將程序的啟動點提供給 Windows 系統(tǒng)。主執(zhí)行線程終止了,進程也就隨之終止。 每一個進程至少有一個主執(zhí)行線程,它無需由用戶去主動創(chuàng)建,是由系統(tǒng)自動創(chuàng)建的。用戶根據(jù)需要在應用程序中創(chuàng)建其它線程,多個線程并發(fā)地運行于同一個進程中。一個進程中的所有線程都在該進程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應用也較為廣泛。 多線程可以實現(xiàn)并行處理,避免了某項任務長時間占用 CPU 時間。要說明的一點是,目前大多數(shù)的計算機都是單處理器( CPU)的,為了運行所有這些線程,操作系統(tǒng)為每個獨立線程安排一些 CPU 時間,操作系統(tǒng)以輪換方式向線程提供時 間片,這就給人一種假象,好象這些線程都在同時運行。由此可見,如果兩個非?;钴S的線程為了搶奪對 CPU 的控制權(quán),在線程切換時會消耗很多的 CPU 資源,反而會降低系統(tǒng)的性能。這一點在多線程編程時應該注意。 Win32 SDK 函數(shù)支持進行多線程的程序設計,并提供了操作系統(tǒng)原理中的各種同步、互斥和臨界區(qū)等操作。 Visual C++ 中,使用 MFC 類庫也實現(xiàn)了多線程的程序設計,使得多線程編程更加方便。 Win32 API 對多線程編程的支持 Win32 提供了一系列的 API 函數(shù)來完成線程的創(chuàng)建、掛起、 恢復、終結(jié)以及通信等工作。下面將選取其中的一些重要函數(shù)進行說明。 (1) HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId)。 該函數(shù)在其調(diào)用進程的進程空間里創(chuàng)建一個新的線程,并返回已建線程的句柄。 (2) DWORD SuspendThread(HANDLE hThread)。 湖北經(jīng)濟學院本科畢業(yè)(設計)論文 14 該函數(shù)用于掛起指定的線程,如果函數(shù)執(zhí)行成功,則線程的執(zhí)行被終止。 (3) DWORD ResumeThread(HANDLE hThread)。 該函數(shù)用于結(jié)束線程的掛
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1