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

正文內(nèi)容

某學(xué)校機(jī)房管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁

2025-04-18 06:50本頁面
  

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