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

正文內容

某學校機房管理系統(tǒng)的設計與實現(xiàn)-資料下載頁

2025-04-18 06:50本頁面
  

【正文】 圖 36 查看進程6)心跳包。所謂心跳包就是在客戶端和服務器間定時通知對方自己狀態(tài)的一個自己定義的命令字,按照一定的時間間隔發(fā)送,類似于心跳,所以叫做心跳包。通過使用心跳包,就能知道客戶端和服務器端是否還相連。在本協(xié)議中,服務器將定時發(fā)送 ALIVE 命令給每個客戶端,客戶端在收到后回復 OK 給服務器端。圖 36 心跳包整個系統(tǒng)的運作流程如下面兩圖所示: 用戶(客戶端)管理員( 服務器)A L I V EO K 591 論文網(wǎng) 初始化,設置服務器用戶是否合法向客戶端發(fā)送請求并返回處理結果接受主機的管理(如鎖屏、截圖等)進行監(jiān)聽,接受連接登錄將新客戶加入到管理集合中結束不合法合法返回處理結果圖 37 服務器流程圖 初始化,鎖定屏幕響應命令,進行相關操作(如截圖,鎖屏)監(jiān)聽服務器命令登錄成功,解除鎖定接收用戶命令發(fā)送結果給服務器 結 束圖 38 客戶端流程圖服務器端在程序開始運行后,一方面啟動了監(jiān)聽線程,不停的準備接收新的客戶端的連接請求。如果客戶端發(fā)送來的用戶合法,那么將這個新的客戶端添加到管理集合中。另一方面,服務器端隨時接收管理員的管理操作,比如針 591 論文網(wǎng) 對某個 ip 的電腦進行截圖操作等。當用戶選擇終止程序時將退出??蛻舳嗽诔绦蜻\行后會首先鎖定屏幕,只有當?shù)卿浄掌鞒晒蟛艜獬i定。在登錄成功后,客戶端就不停的監(jiān)聽來自服務器的消息,并對消息進行響應(可能會在本地進行很多操作) ,然后把結果返回到服務器端。4 系統(tǒng)的實現(xiàn) 用戶界面的實現(xiàn)如下圖所示,用戶界面為友好的 Win32 應用程序,在服務器程序界面左邊??康墓ぞ邨l中,有一個樹控件,該控件列出了系統(tǒng)中正在管理的客戶端 ip。選中其中的某個,就可以進行響應的操作,比如“截取屏幕” ,那么就可以獲取客戶端的屏幕畫面,并顯示到用戶界面中。圖 41 服務器端運行效果圖在客戶端,用戶被要求填入服務器 ip,用戶名以及密碼,然后登錄。如下圖所示: 591 論文網(wǎng) 圖 42 客戶器端運行效果圖 核心算法的實現(xiàn)由于整個系統(tǒng)基本使用 MFC 開發(fā),而且涉及到很多方面,代碼量比較大,不可能一一介紹,下面選擇幾個較為重要的核心功能的實現(xiàn)進行介紹。 客戶端和服務器端的通信 屏幕截圖屏幕截圖的基本功能是通過兩個函數(shù)來實現(xiàn)的:Bmp2Stream 和Screen2Bitmap。正如他們的名字所示, Screen2Bitmap 的作用是將屏幕截圖,并保存到一個位圖中,然后返回這個位圖的句柄;而 Bmp2Stream 則是為了網(wǎng)絡傳輸作準備,它接收一個位圖句柄,對這個位圖進行編碼,并拷貝到一個緩沖區(qū)里。下面是這兩個函數(shù)的具體實現(xiàn):HBITMAP Screen2Bitmap(){HDC hscrdc, hmemdc。// 屏幕和內存設備描述表 HBITMAP hbitmap, holdbitmap。// 位圖句柄 int nwidth, nheight。// 位圖寬度和高度 int xscrn, yscrn。// 屏幕分辨率 //為屏幕創(chuàng)建設備描述表hscrdc = CreateDC(display, NULL, NULL, NULL)。 591 論文網(wǎng) //為屏幕設備描述表創(chuàng)建兼容的內存設備描述表hmemdc = CreateCompatibleDC(hscrdc)。// 獲得屏幕分辨率xscrn = GetDeviceCaps(hscrdc, HORZRES)。yscrn = GetDeviceCaps(hscrdc, VERTRES)。nwidth = xscrn。nheight = yscrn。// 創(chuàng)建一個與屏幕設備描述表兼容的位圖hbitmap = CreateCompatibleBitmap(hscrdc, nwidth, nheight)。// 把新位圖選到內存設備描述表中holdbitmap = (HBITMAP)SelectObject(hmemdc, hbitmap)。// 把屏幕設備描述表拷貝到內存設備描述表中BitBlt(hmemdc, 0, 0, nwidth, nheight, hscrdc, 0, 0, SRCCOPY)。//得到屏幕位圖的句柄hbitmap = (HBITMAP)SelectObject(hmemdc, holdbitmap)。//清除 DeleteDC(hscrdc)。DeleteDC(hmemdc)。// 返回位圖句柄return hbitmap。}BOOL Bmp2Stream( HBITMAPamp。 hBmp, BYTE* amp。bBuf, long amp。size,DWORD type = CXIMAGE_FORMAT_JPG, int nWidth=0, int nHeight=0){if(hBmp != INVALID_HANDLE_VALUE){ 591 論文網(wǎng) CxImage img。if((hBmp)) //位圖句柄構建對象{if(nWidth = 0){nWidth = ()。}if(nHeight = 0){nHeight = ()。}if(!(nWidth, nHeight)) //縮放位圖{return FALSE。}if((bBuf, size, type)) //編碼return TRUE。}}return FALSE。}補充一點,普通情況下,屏幕截圖只能獲得一幅位圖,而這幅位圖的大小一般都在 1M 以上,這不利于網(wǎng)絡傳輸,因此,應該進行圖像壓縮,即圖像格式轉換。在本系統(tǒng)中,使用 CxImage(CxImage 類庫是一個優(yōu)秀的圖像操作類庫。它可以快捷地存取、顯示、轉換各種圖像)這個開源項目提供的強大的庫進行編碼,將位圖轉化為 Jpg 格式再進行傳輸,這正是 Bmp2Stream 函數(shù)存在的目的。 鎖屏和解屏屏幕的鎖定功能可以通過多種方式實現(xiàn),本系統(tǒng)使用的是 Windows 鉤子 591 論文網(wǎng) (Hook)技術進行實現(xiàn)的。所謂鉤子,鉤子(Hook),是 Windows 消息處理機制的一個平臺,應用程序可以在上面設置子程以監(jiān)視指定窗口的某種消息,而且所監(jiān)視的窗口可以是其他進程所創(chuàng)建的。當消息到達后,在目標窗口處理函數(shù)之前處理它。鉤子機制允許應用程序截獲處理 window 消息或特定事件。鉤子實際上是一個處理消息的程序段,通過系統(tǒng)調用,把它掛入系統(tǒng)。每當特定的消息發(fā)出,在沒有到達目的窗口前,鉤子程序就先捕獲該消息,亦即鉤子函數(shù)先得到控制權。這時鉤子函數(shù)即可以加工處理(改變)該消息,也可以不作處理而繼續(xù)傳遞該消息,還可以強制結束消息的傳遞。鉤子有很多種,每一種類型的 Hook 可以使應用程序能夠監(jiān)視不同類型的系統(tǒng)消息處理機制。該系統(tǒng)只需要處理鍵盤和鼠標的輸入,因此只需要在應用程序中安裝 WH_KEYBOARD Hook 用來監(jiān)視 WM_KEYDOWN and WM_KEYUP 消息,還有安裝 WH_MOUSE Hook 監(jiān)視從 GetMessage 或者 PeekMessage 函數(shù)返回的鼠標消息,使用這個 Hook 監(jiān)視輸入到消息隊列中的鼠標消息。按照 Hook 的技術規(guī)范,Hook API 必須寫到一個另一個 dll 中,而在主程序中調用這個 dll 中的 Hook函數(shù)。在本系統(tǒng)中,鎖屏幕和解鎖主要涉及到下面幾個函數(shù):HWND gTargWnd。 //客戶端窗口句柄pragma data_seg (shared)static HHOOK g_hHookK=NULL。static HHOOK g_hHookM=NULL。pragma data_seg ()LRESULT CALLBACK MouseProc( int iCode, WPARAM wParam, LPARAM lParam ){/* *判斷是對哪個窗口進行鼠標輸入, *如果不是對客戶端窗口進行輸入, *直接返回,從而達到屏蔽鼠標的作用 */if(::GetActiveWindow()!=gTargWnd)return 1。return CallNextHookEx(g_hHookM,iCode,wParam,lParam)。 591 論文網(wǎng) }DLLEXPORT int CALLBACK InstallHOOK(HWND hWnd){gTargWnd = hWnd。 //客戶端窗口句柄復制//安裝鍵盤和鼠標鉤子g_hHookK=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,0)。g_hHookM=SetWindowsHookEx(WH_MOUSE, MouseProc, g_hInst, 0)。if(g_hHookM amp。amp。 g_hHookK)return TRUE。elsereturn FALSE。}DLLEXPORT int CALLBACK UninstallHOOK(){//卸載鍵盤和鼠標鉤子if (UnhookWindowsHookEx(g_hHookK)==0||UnhookWindowsHookEx(g_hHookM))return FALSE。elsereturn TRUE。}LRESULT CALLBACK KeyboardProc(int iCode, WPARAM wParam, LPARAM lParam ){/* *判斷是對哪個窗口進行鍵盤輸入, *如果不是對客戶端窗口進行輸入, *直接返回,從而達到屏蔽鍵盤的作用 */ 591 論文網(wǎng) if(::GetActiveWindow()!=gTargWnd)return 1。return CallNextHookEx(g_hHookK,iCode,wParam,lParam)。}結 論在分析以往一些機房監(jiān)控系統(tǒng)的基礎上,此設計采用 Socket 編程技術和鉤子(Hook)技術設計方案。該方案采用 C/S 模式,采用 VC++ 作為開發(fā)工具,在 Win32 平臺下實現(xiàn)了一個機房監(jiān)控系統(tǒng)。系統(tǒng)能實現(xiàn)屏幕截圖、鎖定屏幕以及服務器端和客戶端的通信等功能。經(jīng)過測試后,該系統(tǒng)達到了預想中的效果,能夠實現(xiàn)簡易的功能。本文的主要工作有:1)介紹了機房監(jiān)控的重要行,對 CS 模式、Socket 、Hook 及都進行了簡單的介紹;2) 闡述了 Socket 的基本實現(xiàn)原理;3) 模擬了機房監(jiān)控系統(tǒng)的開發(fā)需求,提出了比較詳細的解決方案,闡明了系統(tǒng)的功能模塊的劃分及相互之間的關系,并詳細描述了每個模塊的實現(xiàn)過程或者實現(xiàn)方法;該系統(tǒng)也有一些不盡人意的地方。需求分析并沒有非常細致全面,軟件的性能、健壯性、使用方便及美觀等方面離真正的商業(yè)軟件還有一定的差距;系統(tǒng)并沒有考慮安全因素;另外,該系統(tǒng)并沒有考慮與機房其他軟件系統(tǒng)之間的關系,這些都有待今后的完善。經(jīng)過幾個月來的設計,系統(tǒng)基本滿足機房監(jiān)控方面的需要。系統(tǒng)設計期間,學習到了很多課堂上沒有的知識,增強了動手能力和解決實際問題的能力,提高了認識和學習新事物的能力,特別是增強了自己在程序設計方面的信心和動手實踐能力,這些對于未來的工作無疑將是一筆寶貴的財富。參考文獻[1] Jeff Prosise. MFC Windows 程序設計 第二版[M]. 清華大學出版社,2022。[2] 侯捷. 深入淺出 MFC [M]. 華中科技大學出版社,2022。[3] 汪令江 等. 奇思異想編程序 VC 篇[M]. 國防工業(yè)出版社,2022。[4] Jeffrey Richer. Windows 核心編程[M]. 機械工業(yè)出版社,2022。[5] MFC 程序設計[M]. 人民郵電出版社,2022。[6] John . VISUAL C++MFC 擴展編程實例[M]. 北京機械工業(yè)出版社, 2022。[7] 孫鑫 等 VC++深入詳解[M]. 電子工業(yè)出版社,2022。 591 論文網(wǎng) 文檔來源:5
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1