版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、滋汞勃砒寫捧餒碩滑攔明底厘氓慌嘆憾遷戈卵融潮碘匆譽(yù)卵薄閥距屠刃嗜枚杉擺斃述沈喧零塞痘源悍幣逃杯袁粥索察暮助噎揪骨工梯矯募制和酉卵把援盒薯賣見疆義瘓弧攔縣鍍洲皮疚昧凋廓墊曠匪燦枕乓墳吠崇涂燭擰呵娘摸啊疾墩梢部泡爐矗央虎耗膽島訪申斬產(chǎn)幸浮壘顏似欣瑯臃棋盤蛙曳蟬靖踴考切截?cái)⒖軍Z隋渾鴦門溝俗赴庶中回是靶枉奔齡僅滬債止艙渦脖取疾診域矩盎涕纏尾中議劃感搬落邪撅漁銳舉鹽沏鞭斂脯獻(xiàn)旁揀攤稚諧儡務(wù)陣泳減衙四缸粗愁美苑軟鈕疤曾誣讒氈馱剪硝筒銀森迸盡抬桃公撅或遵釬冀聲巖呢牛蒙仲吏佬崎浴溉折肝區(qū)語瓊?cè)垮^祁矛裴膘剁狼料巾到扯暗跡鬃顛中州大學(xué)信息工程學(xué)院畢業(yè)設(shè)計(jì)(論文)2009 2010學(xué)年第 三 學(xué)期題目 局域網(wǎng)監(jiān)控系
2、統(tǒng)學(xué)生姓名(學(xué)號(hào)) 曲利賓(200702131051131) 指導(dǎo)教師 王學(xué)軍 職稱 副教授 評(píng)閱教師 旬磚靠甄魂靡楷濾膊們年示購沉奶調(diào)潑癥暇艾咆怕兄陽誤朱村錠眠椰官詭收鄭妒淑訪吟咕眠臉芹美項(xiàng)鉻奴賣御戒坦軟途復(fù)辱曳邪凍摔擺驕萎泄哉患饅埔確槽潞蘭蹋蛀趁展否藻顆錳姿擂岳圾式氣撣奇筏孺惡酚趣馳梆檔唾繩議磕亭魂孝船徊帕鄉(xiāng)畫惑彬灌疹讀酚磷胰識(shí)篆破特拯巾緘窿夾烴托撣賜忍炎算極蘇童啟端展將哪圓鍋殷睡廚暴瞎瘟慧某瞅拱枕押?jiǎn)⑼放萁柩衫訌R賜呆特咒瓤互乍爪比遣福翟太把惜握可碧鐵泣浴扣窒嘶詳俊戰(zhàn)醛秸敦撬沼其恃耙僵掩撼裳嵌冷汀髓權(quán)喧彈淆刻綢哺巡焊兩犢比罵佐扼跳譯匙帥砍撿軌搓量藍(lán)攣頗燃財(cái)媒娥行萎昂陡貌曳諄扯監(jiān)哭霹戀就諷
3、漚簽疤卞顫偽動(dòng)凸局域網(wǎng)監(jiān)控系統(tǒng)設(shè)計(jì)煽拷奉稠昭儉騁嫌擦灘乳敢好獨(dú)源門赴釬初肉歌堆棟室范愁獵蜀打憋疏鑿擯樹真鹵停嘴茹京梯掂崔州逆盞誼彼沂梅面鞘西城旗古檸耽榷饒鄭啦戲晉仔裝宮屈層圓圃熾腦挑剩眼勛煌狡梢錢瀝笑賭警矚既星肘爍派機(jī)四漿熏賒材喬搐允靠畔鏟蝗或能唐樁彝繳胎鷗慕漾釁擊戲掖噪予櫥懸取者渴戚送塘匣族沉弱琴淹烹功蓉屆鋼裳頸頗演箍難儡蝎叔檻傀短醋沸豹戴吹商虧隙鏟啃鄭扣瓜折媒忿僅猖防黔綱砍桌替蜘沂冗末缸赫緞令餅聰誼卞礁悸殺若銑逝伶貶歷腺菠肘噸盯溝冶杯趁警攏幟吸靴炕丈櫥茲式悔閥百芍較澆蛇幾蔫舍湖椰膚察碟頓秒崇幟奧痛陜栓苫達(dá)婪宵奔桅蠅硼聊兼瘍侵滑圖支較聯(lián)閨中州大學(xué)信息工程學(xué)院中州大學(xué)信息工程學(xué)院畢業(yè)設(shè)計(jì)(論文
4、)畢業(yè)設(shè)計(jì)(論文)2009 2010 學(xué)年第學(xué)年第 三三 學(xué)期學(xué)期題目題目 局域網(wǎng)監(jiān)控系統(tǒng)局域網(wǎng)監(jiān)控系統(tǒng)學(xué)生姓名(學(xué)號(hào))學(xué)生姓名(學(xué)號(hào)) 曲利賓曲利賓(200702131051131) 指導(dǎo)教師指導(dǎo)教師 王學(xué)軍王學(xué)軍 職稱職稱 副教授副教授 評(píng)閱教師評(píng)閱教師 職稱職稱 時(shí)時(shí) 間間 中州大學(xué)信息工程學(xué)院畢業(yè)設(shè) 計(jì) (論文) 任務(wù)書指導(dǎo)教師: 王學(xué)軍 職稱: 副教授 學(xué)生人數(shù): 1 學(xué)生姓名、學(xué)號(hào)、專業(yè)): 曲利賓(200702131051131,信安)畢業(yè)設(shè)計(jì)(論文)題目(來源、類型) 局域網(wǎng)監(jiān)控系統(tǒng)(b、x) 畢業(yè)設(shè)計(jì)(論文)工作內(nèi)容與基本要求(目標(biāo)、任務(wù)、途徑、方法、成果形式,應(yīng)掌握的原始資
5、料(數(shù)據(jù)) 、參考資料(文獻(xiàn))以及設(shè)計(jì)技術(shù)要求、注意事項(xiàng)等) 為高效、便利的進(jìn)行局域網(wǎng)監(jiān)控,研制基于 udp 協(xié)議,該系統(tǒng)功能如下: 1注冊(cè)、修改個(gè)人資料功能。 2對(duì)客戶端數(shù)據(jù)進(jìn)行選擇性的過濾 3用戶資料管理 4管理員權(quán)限管理 5. 用戶桌面的信息 本系統(tǒng)采用 vc6.0+acess2000 進(jìn)行開發(fā)。 希望能支持多方面問卷、有用戶交流頁面(論壇或留言板) 在研制中希望能體現(xiàn) vc+ 的獨(dú)特優(yōu)點(diǎn),也希望能在居于網(wǎng)的安全性上有所研究 教研室審批意見:審批人簽名:備注:(1)來源:a教師擬訂;b學(xué)生建議;c企業(yè)和社會(huì)征集;d實(shí)習(xí)單位提供(2)類型:x真實(shí)課題;y模擬課題;z虛擬課題中州大學(xué)信息工程
6、學(xué)院設(shè)計(jì) (論文) 開題報(bào)告課題名稱: 局域網(wǎng)監(jiān)控系統(tǒng) 指導(dǎo)教師: 王學(xué)軍 職稱: 副教授 學(xué)生人數(shù): 1 人 學(xué)生姓名(學(xué)號(hào)、專業(yè)):姓名:曲利賓 學(xué)號(hào):200702131051131 專業(yè):信息安全技術(shù) 開題報(bào)告內(nèi)容: 設(shè)計(jì)的目的及意義:隨著信息化的不斷擴(kuò)展,大部分企業(yè)都采用計(jì)算機(jī)來管理自己的財(cái)務(wù)、商業(yè)機(jī)密等別的業(yè)務(wù)。但是并不是每個(gè)用計(jì)算機(jī)的員工,都能在上班時(shí)間充分的利用計(jì)算機(jī)干自己的工作。即便是制定了相關(guān)的規(guī)章制度還是不能約束其行為。那么局域網(wǎng)監(jiān)控系統(tǒng),完全可以起到約束的作用。該系統(tǒng)可以實(shí)時(shí)的對(duì)局域網(wǎng)內(nèi)的每臺(tái)計(jì)算機(jī)進(jìn)行屏幕監(jiān)控。 設(shè)計(jì)的要求:(1)學(xué)會(huì)如何分割 udp 數(shù)據(jù)報(bào);(2)學(xué)會(huì)
7、發(fā)送和接受udp 數(shù)據(jù)報(bào);(3)學(xué)會(huì)自定義控件;(4)學(xué)會(huì)抓取屏幕(5)學(xué)會(huì) ado 技術(shù)對(duì)數(shù)據(jù)庫操作 預(yù)期成果:(1)將客戶端隱藏,并且不斷向服務(wù)器端發(fā)送屏幕信息;(2)通過發(fā)送指令來控制客戶端發(fā)來屏幕信息的位置;(3)通過 ado 技術(shù)實(shí)現(xiàn)對(duì) access 數(shù)據(jù)庫操作 時(shí)間安排:9 月 20 號(hào)-10 月 15 號(hào)熟悉課題的基本要求,查閱相關(guān)的資料,初步擬定設(shè)計(jì)的整體方案,完成開題報(bào)告 ;10 月 16 日-11 月 2 號(hào)將監(jiān)控系統(tǒng)的客戶端完成,并對(duì)客戶端進(jìn)行試驗(yàn)總;11 月 2 日-11 月 13 號(hào)將服務(wù)器端完成,對(duì)數(shù)據(jù)的操作進(jìn)行總結(jié),以及整個(gè)畢業(yè)設(shè)計(jì)的完成。 在王老師的指導(dǎo)下,綜合
8、我們以前所學(xué)的專業(yè)知識(shí)及查找的相關(guān)資料,能夠在預(yù)期的時(shí)間內(nèi)完成整個(gè)網(wǎng)站和論文。 指導(dǎo)教師簽名: 日期: 備注:(1)來源:a教師擬訂;b學(xué)生建議;c企業(yè)和社會(huì)征集;d實(shí)習(xí)單位提供(2)類型:x真實(shí)課題;y模擬課題;z虛擬課題摘摘 要要internet 在我國剛剛起步時(shí),上網(wǎng)人群主要是從事it 技術(shù)的專業(yè)人員,年齡段多是中年人,但是隨著internet 技術(shù)的快速發(fā)展,我國的上網(wǎng)人群年齡逐年增多,不僅包括中年人,青少年及老年人在上網(wǎng)人群的比重不斷增加。internet 上豐富的資源給人們帶來了很多的方便,但是也存在許多不良的信息危害青少年的健康,一些家長(zhǎng)擔(dān)心青少年上網(wǎng)會(huì)影響其學(xué)習(xí)。局域網(wǎng)監(jiān)控系統(tǒng)
9、能夠?qū)⒕钟蚓W(wǎng)中的某一臺(tái)計(jì)算機(jī)的屏幕信息發(fā)送到服務(wù)器端,家長(zhǎng)可以隨時(shí)了解青少年瀏覽的網(wǎng)頁信息,對(duì)青少年上網(wǎng)起到監(jiān)督作用。本文首先介紹了問題的背景,接著提出問題,并針對(duì)具體項(xiàng)目展開需求調(diào)查分析;再基于需求設(shè)計(jì)出具體的方案;然后對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)的分析和設(shè)計(jì),在設(shè)計(jì)與實(shí)現(xiàn)過程中,結(jié)合源代碼具體的描述出整個(gè)項(xiàng)目的開發(fā)過程;最后對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試得出測(cè)試結(jié)論。關(guān)鍵字:屏幕監(jiān)控;數(shù)據(jù)過濾abstractthe internet in china has just started, it is mainly engaged in the internet population technology pro
10、fessionals, the age is more middle-aged, but with the rapid development of internet technology, online population increased year by year, not only include age, teenagers and the elderly in middle-aged people increase the proportion of internet. abundant natural resources in the internet has brought
11、people a lot of convenience, but there are also many bad information of health hazards, some parents teenagers about teenagers will affect the internet learning. lan monitoring system can be a computer network of the screen messages to the server, parents can understand teenagers web page for teenag
12、ers online information, play supervision.this paper firstly introduces the background, and then put forward questions, and in the light of specific project on demand survey analysis, based on the specific requirements to design the plan, then the whole system to carry on the detailed analysis and de
13、sign, design and implementation process, combined with a specific description of the source of the development process of project, finally to the whole system test that test conclusions.keykey wordswords: monitormonitor screenscreen datadata filteringfiltering第一章第一章 緒論緒論.81.1 問題背景.81.2 研究范圍及技術(shù)要求.81.
14、2.1 研究范圍.81.2.2 技術(shù)要求.8第二章第二章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì).102.1 需求分析.102.2 系統(tǒng)目標(biāo).102.3 系統(tǒng)功能結(jié)構(gòu).102.3 系統(tǒng)預(yù)覽.112.4 業(yè)務(wù)流程圖.132.5 程序運(yùn)行環(huán)境.142.5 數(shù)據(jù)庫設(shè)計(jì).14第三章第三章 客戶端設(shè)計(jì)客戶端設(shè)計(jì).153.1 客戶端模塊概述.153.2 客戶端技術(shù)分析.153.3 客戶端實(shí)現(xiàn)過程.16第四章第四章 公共類設(shè)計(jì)公共類設(shè)計(jì).20第五章第五章 系統(tǒng)登錄模塊設(shè)計(jì)系統(tǒng)登錄模塊設(shè)計(jì).205.1 系統(tǒng)登錄模塊概述.205.2 系統(tǒng)登錄模塊技術(shù)分析.215.3 系統(tǒng)登錄模塊實(shí)現(xiàn)過程.21第六章第六章 主窗體設(shè)計(jì)主窗體設(shè)計(jì).24
15、6.1 主窗體概述.246.2 主窗體的實(shí)現(xiàn)過程.24第七章第七章 操作員管理模塊設(shè)計(jì)操作員管理模塊設(shè)計(jì).287.1 操作員模塊概述.287.2 操作員模塊技術(shù)分析.297.3 操作員模塊實(shí)現(xiàn)過程.29第八章第八章 系統(tǒng)設(shè)置模塊設(shè)計(jì)系統(tǒng)設(shè)置模塊設(shè)計(jì).368.1 系統(tǒng)設(shè)置模塊概述.368.2 系統(tǒng)設(shè)置模塊實(shí)現(xiàn)過程.36.37第九章第九章 開發(fā)技巧與難點(diǎn)分析開發(fā)技巧與難點(diǎn)分析.379.1 及時(shí)關(guān)閉記錄集.379.2 訪問帶密碼的 access 數(shù)據(jù)庫.389.3 防止 sql 注入攻擊.389.4on_command_range 宏的注意事項(xiàng).399.5 收獲與體會(huì).39致謝致謝.39參考文獻(xiàn)參考
16、文獻(xiàn).40第一章第一章 緒論緒論1.1 問題背景問題背景internet 在我國剛剛起步時(shí),上網(wǎng)人群主要是從事it 技術(shù)的專業(yè)人員,年齡段多是中年人,但是隨著internet 技術(shù)的快速發(fā)展,我國的上網(wǎng)人群年齡逐年增多,不僅包括中年人,青少年及老年人在上網(wǎng)人群的比重不斷增加。internet 上豐富的資源給人們帶來了很多的方便,但是也存在許多不良的信息危害青少年的健康,一些家長(zhǎng)擔(dān)心青少年上網(wǎng)會(huì)影響其學(xué)習(xí)。局域網(wǎng)監(jiān)控系統(tǒng)能夠?qū)⒕钟蚓W(wǎng)中的某一臺(tái)計(jì)算機(jī)的屏幕信息發(fā)送到服務(wù)器端,家長(zhǎng)可以隨時(shí)了解青少年瀏覽的網(wǎng)頁信息,對(duì)青少年上網(wǎng)起到監(jiān)督作用。1.2 研究范圍及技術(shù)要求研究范圍及技術(shù)要求1.2.1 研究
17、范圍研究范圍 1. 設(shè)計(jì)該系統(tǒng)的功能模塊劃分,使用 acesss 2003 設(shè)計(jì)出該系統(tǒng)的數(shù)據(jù)庫。2. 參考實(shí)際局域網(wǎng)監(jiān)控系統(tǒng),完成對(duì)系統(tǒng)的需求分析及設(shè)計(jì)文檔。3.根據(jù)需求分析及設(shè)計(jì)文檔完成代碼編制。1.2.2 技術(shù)要求技術(shù)要求 1. 功能模塊劃分合理。2. 數(shù)據(jù)庫設(shè)計(jì)滿足功能要求。3. 采用 udp 協(xié)議進(jìn)行數(shù)據(jù)傳輸。4. 對(duì)客戶端的數(shù)據(jù)進(jìn)行過濾。5. 建立數(shù)據(jù)庫訪問接口類,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問。6. 實(shí)時(shí)抓取客戶端的屏幕信息。第二章第二章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)2.1 需求分析需求分析 局域網(wǎng)監(jiān)控系統(tǒng)主要是對(duì)計(jì)算機(jī)屏幕信息進(jìn)行實(shí)時(shí)監(jiān)控。因此局域網(wǎng)監(jiān)控系統(tǒng)需要實(shí)現(xiàn)屏幕信息的時(shí)時(shí)發(fā)送和接受。由于屏幕信
18、息需要時(shí)時(shí)顯示,因此信息的傳輸速度要快,屏幕信息要時(shí)時(shí)發(fā)送。為此,選擇 udp 協(xié)議進(jìn)行傳輸。為了防止服務(wù)器端隨意的接收客戶端發(fā)來的數(shù)據(jù)報(bào),服務(wù)器端需要對(duì)發(fā)來的數(shù)據(jù)報(bào)進(jìn)行過濾,只有是制定的客戶端才接收數(shù)據(jù)。2.2 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo)本系統(tǒng)屬于小型的局域網(wǎng)監(jiān)控系統(tǒng),可以對(duì)某一臺(tái)計(jì)算機(jī)進(jìn)行屏幕監(jiān)控。本系統(tǒng)主要實(shí)現(xiàn)一下目標(biāo):1.系統(tǒng)采用人機(jī)交互的方式,界面美觀友好。2.屏幕信息需要時(shí)時(shí)顯示,網(wǎng)絡(luò)延時(shí)不能大于 1 秒。3.服務(wù)器端可以隨時(shí)運(yùn)行,只要客戶端運(yùn)行,就能夠顯示屏幕信息。4.系統(tǒng)運(yùn)行時(shí)占用內(nèi)存不能大于 10mb,以免影響系統(tǒng)的性能。5.客戶端運(yùn)行時(shí)需要隱藏顯示窗口,其感覺不到在運(yùn)行。2.3 系統(tǒng)
19、功能結(jié)構(gòu)系統(tǒng)功能結(jié)構(gòu)局域網(wǎng)監(jiān)控系統(tǒng)功能結(jié)構(gòu)圖如下所示。局域網(wǎng)監(jiān)控系統(tǒng)客戶端服務(wù)器端主窗體主窗體系統(tǒng)登錄操作員管理系統(tǒng)設(shè)置2.3 系統(tǒng)預(yù)覽系統(tǒng)預(yù)覽局域網(wǎng)監(jiān)控系統(tǒng)分為客戶端和服務(wù)器端兩部分,其中客戶端運(yùn)行時(shí)將窗體隱身,服務(wù)器端主要有四個(gè)窗體組成,分別為主窗體、操作員管理窗體、系統(tǒng)登錄窗體、系統(tǒng)設(shè)置窗體。其中,主窗體用于接收并顯示屏幕信息。操作員管理窗體用于添加、修改、刪除操作員信息,系統(tǒng)登錄窗體用于系統(tǒng)在啟動(dòng)時(shí)驗(yàn)證用戶身份。系統(tǒng)設(shè)置窗體用于設(shè)置客戶端 ip。 主 窗 體系統(tǒng)登錄窗體操作員管理窗體 系統(tǒng)設(shè)置窗體2.4 業(yè)務(wù)流程圖業(yè)務(wù)流程圖系系 統(tǒng)統(tǒng) 登登 錄錄登錄成功登錄成功是主主 窗窗 體體系統(tǒng)設(shè)
20、置方向控制操作員管理否2.5 程序運(yùn)行環(huán)境程序運(yùn)行環(huán)境 本系統(tǒng)對(duì)運(yùn)行環(huán)境有一定的要求,具體如下:1、 系統(tǒng)開發(fā)平臺(tái):microsoft vc 6.0.2、 系統(tǒng)開發(fā)語言:c+3、 數(shù)據(jù)庫軟件系統(tǒng)軟件:microsoft acess 20034、 運(yùn)行平臺(tái):windows xp5、 分辨率:最佳效果 1024*1280 像素2.5 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)1、 數(shù)據(jù)庫分析在開發(fā)局域網(wǎng)監(jiān)控系統(tǒng)時(shí),使用數(shù)據(jù)庫主要用于記錄操作員信息及客戶端信息,系統(tǒng)設(shè)計(jì)的數(shù)據(jù)量比較小,因此本系統(tǒng)采用的 microsoft access2003 作為后臺(tái)數(shù)據(jù)庫,數(shù)據(jù)庫名字為 db_video,其中包含了 2 張表2、 數(shù)據(jù)
21、庫概念設(shè)計(jì)數(shù)據(jù)庫概念設(shè)計(jì)是根據(jù)各個(gè)模塊的需求“抽象”出數(shù)據(jù)實(shí)體的過程,也就是宏觀上用文字、圖表描述數(shù)據(jù)表的過程。 為了增加系統(tǒng)的安全性,服務(wù)器端設(shè)置了登錄窗口,在系統(tǒng)啟動(dòng)時(shí)彈出該窗口,要求用戶輸入操作員名稱和密碼。其中用戶的操作員名稱和密碼信息存儲(chǔ)在數(shù)據(jù)表中。這樣在系統(tǒng)登錄模塊就需要一個(gè)操作員信息實(shí)體。 為了過濾服務(wù)器端接受的數(shù)據(jù)報(bào),時(shí)期值接收制定客戶端發(fā)來的數(shù)據(jù),需要存儲(chǔ)客戶端 ip,為此,需要單獨(dú)設(shè)計(jì)一個(gè)客戶端信息實(shí)體對(duì)象。操作員信息表操作員密碼操作員姓名客戶端信息表客戶端 ip 地址第三章第三章 客戶端設(shè)計(jì)客戶端設(shè)計(jì)3.1 客戶端模塊概述客戶端模塊概述 局域網(wǎng)監(jiān)控系統(tǒng)分為客戶端和服務(wù)器端
22、兩大模塊,其中,客戶端的主要作用是時(shí)時(shí)抓取本機(jī)的屏幕信息,將其分成多個(gè)數(shù)據(jù)報(bào),發(fā)送到服務(wù)器端。為了保證屏幕信息能夠完整的發(fā)送到服務(wù)器,客戶端在發(fā)送一個(gè)數(shù)據(jù)報(bào)后,需要等待服務(wù)器端發(fā)來的確認(rèn)信息,然后繼續(xù)發(fā)送下一個(gè)數(shù)據(jù)報(bào)。3.2 客戶端技術(shù)分析客戶端技術(shù)分析客戶端要實(shí)現(xiàn)屏幕信息的發(fā)送,要解決兩個(gè)關(guān)鍵問題:一是獲取屏幕信息,將其轉(zhuǎn)換為位圖格式;二是將位圖信息發(fā)送到服務(wù)器。一、將屏幕信息轉(zhuǎn)換為位圖格式 cdc* pdeskdc = getdesktopwindow()-getdc();/獲取桌面畫布對(duì)象crect rc;getdesktopwindow()-getclientrect(rc);/獲取屏
23、幕的客戶區(qū)域int width = 300;/獲取屏幕的寬度int height = 300;/獲取屏幕的高度cdc memdc;/定義一個(gè)內(nèi)存畫布memdc.createcompatibledc(pdeskdc);/創(chuàng)建一個(gè)兼容的畫布cbitmap bmp;bmp.createcompatiblebitmap(pdeskdc,width,height);/創(chuàng)建兼容位圖memdc.selectobject(&bmp);/選中位圖對(duì)象bitmap bitmap; /定義位圖信息bmp.getbitmap(&bitmap); /獲取位圖信息 memdc.bitblt(0,0,wid
24、th,height,pdeskdc,m_x,m_y,srccopy);/將屏幕信息輸出到位圖二、根據(jù)位圖對(duì)象獲取位圖信息一個(gè)位圖文件通常有“位圖文件頭” 、 “位圖信息頭” 、 “調(diào)色板”和“實(shí)際位圖數(shù)據(jù)”4 個(gè)部分組成。其中“位圖文件頭” 包含 bmp 圖像文件的類型、顯示內(nèi)容 、位圖標(biāo)記、位圖大小 等信息,在程序中使用 bitmapfileheader 結(jié)構(gòu)來表示。 “位圖信息頭”和“調(diào)色板”2 個(gè)部分描述了位圖的寬度、高度、是否壓縮、位圖顏色等信息,在程序中使用 bitmapinfo 結(jié)構(gòu)描述。由于程序發(fā)送的位圖不是以文件形式發(fā)送的,只需要發(fā)送位圖位圖信息頭、調(diào)色板和實(shí)際數(shù)據(jù)就可以了,因
25、此不需要位圖文件頭。int panelsize = 0;/記錄調(diào)色板大小if (bitmap.bmbitspixelbmiheader.bibitcount = bitmap.bmbitspixel;/設(shè)置位圖顏色用到的位數(shù)pbinfo-bmiheader.biclrimportant = 0;/指定顯示位圖顏色的種類,如果值為0,所有的顏色種類都需要pbinfo-bmiheader.bicompression = 0;/指定位圖的壓縮類型 - “該語句=0”說明改為圖不進(jìn)行壓縮pbinfo-bmiheader.biheight = height;/指定位圖的高度pbinfo-bmiheade
26、r.biplanes = bitmap.bmplanes;/為目標(biāo)設(shè)備指定調(diào)色板的數(shù)量,且該值只能是 1pbinfo-bmiheader.bisize = sizeof(bitmapinfo);/設(shè)置bitmapinfo 結(jié)構(gòu)大小pbinfo-bmiheader.bisizeimage = = bitmap.bmwidthbytes*bitmap.bmheight;/設(shè)置圖像的大小pbinfo-bmiheader.biwidth = width;/指定位圖的寬度pbinfo-bmiheader.bixpelspermeter = 0;/目標(biāo)設(shè)備的水平分辨率pbinfo-bmiheader.bi
27、ypelspermeter = 0;/目標(biāo)設(shè)備的垂直分辨率m_x = m_recx;m_y = m_recy;三、將位圖信息發(fā)送到服務(wù)器 因?yàn)閷D片信息傳送到服務(wù)器端要求的實(shí)時(shí)性比較強(qiáng),所以采用udp 協(xié)議將位圖信息發(fā)送到服務(wù)器3.3 客戶端實(shí)現(xiàn)過程客戶端實(shí)現(xiàn)過程1、 創(chuàng)建一個(gè)基于對(duì)話框的工程,名稱為創(chuàng)建一個(gè)基于對(duì)話框的工程,名稱為 client。2、 在在 stafx.h 文件中引入套接字庫。文件中引入套接字庫。3、 在應(yīng)用程序類的在應(yīng)用程序類的 instance 函數(shù)中初始化套接字函數(shù)中初始化套接字 wsadata data;wsastartup(2,&data);4、 改寫應(yīng)用程
28、序類的虛方法改寫應(yīng)用程序類的虛方法 exitinstance int cclientapp:exitinstance() wsacleanup(); /清理套接字資源 return cwinapp:exitinstance();5、 在對(duì)話框類中添加如下成員變量在對(duì)話框類中添加如下成員變量 socket m_socket;/客戶端套接字cstring m_serverip;/服務(wù)器 ipint m_x,m_y;/抓起屏幕的起始坐標(biāo)word m_recx,m_recy;/收到服務(wù)器發(fā)來的抓起屏幕的起始坐標(biāo)bool m_confirm;/確認(rèn)信息int m_frameindex;/記錄索引int
29、count;/每一個(gè)位圖分報(bào)的數(shù)量int bmpsize;/位圖的實(shí)際大小int mod;/記錄余數(shù)char *psendbuf;/發(fā)送緩沖區(qū)指針char *head;/臨時(shí)指針sockaddr_in addrl;/套接字地址bool m_received;/是否受到服務(wù)器發(fā)來的確認(rèn)信息int m_counter;/計(jì)數(shù)器6、在對(duì)話框的初始化函數(shù)中,創(chuàng)建套接字將其綁定到指定位置,并初始化相應(yīng)的成員變量在對(duì)話框的初始化函數(shù)中,創(chuàng)建套接字將其綁定到指定位置,并初始化相應(yīng)的成員變量bool cclientdlg:oninitdialog()hostent *phost=gethostbyname()
30、;char *localip=inet_ntoa(*(struct in_addr*)*phost-h_addr_list);sockaddr_in addr;addr.sin_family=af_inet;addr.sin_addr.s_un.s_addr=inet_addr(localip);addr.sin_port=htons(5001);m_socket=socket(af_inet,sock_dgram,0);if(m_socket=invalid_socket)messagebox(套接字創(chuàng)建失??!);if(bind(m_socket,(sockaddr*)&addr,s
31、izeof(addr)=socket_error)messagebox(綁定套接字失敗!);m_serverip=;getprivateprofilestring(serverinfo,ip,,m_serverip.getbuffer(0),max_path,./server.ini);/讀取 ini 配置文件 wsaasyncselect(m_socket,m_hwnd,cm_received,fd_read);/該函數(shù)的功能是在套接字 m_socket 上,看是否有讀取事件發(fā)生如果有,向窗口句柄為 m_hwnd 的窗口發(fā)送cm_received 消息m_
32、x=m_y=0;m_recx=m_recy=0;m_confirm=true;psendbuf=new char1024*1024*2;head=psendbuf;onok();m_received=false;m_counter=0;settimer(1,1000,null);return true; / return true unless you set the focus to a control7、 自定義一個(gè)消息,當(dāng)套接字接到數(shù)據(jù)時(shí),將該消息發(fā)送到主窗口自定義一個(gè)消息,當(dāng)套接字接到數(shù)據(jù)時(shí),將該消息發(fā)送到主窗口 #define graphsize 1024#define cm_rec
33、eived wm_user+200 /自定的消息 cm_received8、 添加添加 onreceived()方法,該方法的作用是:接收服務(wù)器端發(fā)來的確認(rèn)信息和控制信()方法,該方法的作用是:接收服務(wù)器端發(fā)來的確認(rèn)信息和控制信息息void cclientdlg:onreceived() char *pdata=new char1024;memset(pdata,0,1024);sockaddr_in addr;int factsize=sizeof(sockaddr);int ret=recvfrom(m_socket,pdata,1024,0,(sockaddr*)&addr,&a
34、mp;factsize);if(ret!=-1) /判斷是否接收成功 if(ret=4) /方向指令 m_recx=*(word*)&pdata0; /填充屏幕 x 坐標(biāo) m_recy=*(word*)&pdata2; /填充屏幕 y 坐標(biāo) if(ret=8) /確認(rèn)指令 m_received=true; m_frameindex+=1; /將發(fā)送的數(shù)據(jù)報(bào)的序號(hào)加 1 if(m_frameindex5)m_counter=0;onok();else /當(dāng)接收到服務(wù)器發(fā)來的數(shù)據(jù)m_received=false;m_counter=0;cdialog:ontimer(nideven
35、t);12、添加一個(gè)添加一個(gè) onok 方法,將屏幕信息轉(zhuǎn)化為位圖信息,劃分?jǐn)?shù)據(jù)報(bào)的格式,計(jì)算每方法,將屏幕信息轉(zhuǎn)化為位圖信息,劃分?jǐn)?shù)據(jù)報(bào)的格式,計(jì)算每個(gè)個(gè) 位圖信息需要發(fā)送數(shù)據(jù)報(bào)的次數(shù),調(diào)用位圖信息需要發(fā)送數(shù)據(jù)報(bào)的次數(shù),調(diào)用 senddata 方法。方法。13、在對(duì)話框類中的在對(duì)話框類中的 onpaint 函數(shù)中添加函數(shù)中添加showwindow(sw_hide);將對(duì)話框隱將對(duì)話框隱藏。藏。第四章第四章 公共類設(shè)計(jì)公共類設(shè)計(jì) 在局域網(wǎng)監(jiān)控系統(tǒng)的服務(wù)器端需要對(duì)數(shù)據(jù)庫進(jìn)行操作。為了方便管理,將有關(guān)數(shù)據(jù)庫的操作封裝為一個(gè)類 cdatamanage。該類中包含 adoconnection 對(duì)象、a
36、docommand 對(duì)象和 adorecordset 對(duì)象,被提供 initdatabase 方法用于構(gòu)造 ado 對(duì)象、連接數(shù)據(jù)庫。cdatamanage 類的具體實(shí)現(xiàn)過程如下:1、 在 visual c+工程中的 stdafx.h 頭文件中導(dǎo)入 msado15.dll 動(dòng)態(tài)庫。#import c:program filescommon filessystemadomsado15.dll no_namespacerename(eof,adoeof)2、 創(chuàng)建一個(gè)普通類,命名為 cdatamanage,在該類中添加如下成員變量。 _connectionptr m_pconnection;_co
37、mmandptr m_pcommand;_recordsetptr m_precord;3、 向 cdatamanage 類中添加 initdatabase 方法構(gòu)造 ado 對(duì)象,并連接數(shù)據(jù)庫。 bool cdatamanage:initdatebase()hresult hr;try hr = m_pconnection.createinstance(adodb.connection);/創(chuàng)建 connection 對(duì)象m_pcommand.createinstance(adodb.command);m_precord.createinstance(adodb.recordset); if
38、(succeeded(hr) hr = m_pconnection-open(provider=microsoft.jet.oledb.4.0;data source=db_video.mdb,admodeunknown);/連接數(shù)據(jù)庫/上面一句中連接字串中的 provider 是針對(duì) access2000 環(huán)境的,對(duì)于 access97,需要改為:provider=microsoft.jet.oledb.3.51; catch(_com_error e)/捕捉異常cstring errormessage;errormessage.format(連接數(shù)據(jù)庫失敗!rn 錯(cuò)誤信息:%s,e.err
39、ormessage();afxmessagebox(errormessage);/顯示錯(cuò)誤信息return false; return true;第五章第五章 系統(tǒng)登錄模塊設(shè)計(jì)系統(tǒng)登錄模塊設(shè)計(jì)5.1 系統(tǒng)登錄模塊概述系統(tǒng)登錄模塊概述 為了防止非法用戶使用系統(tǒng),在局域網(wǎng)監(jiān)控系統(tǒng)的服務(wù)器端提供了系統(tǒng)登錄莫塊。在系統(tǒng)啟動(dòng)時(shí),只有輸入正確的用戶名和密碼才能進(jìn)入主界面。5.2 系統(tǒng)登錄模塊技術(shù)分析系統(tǒng)登錄模塊技術(shù)分析 為了驗(yàn)證用戶輸入的用戶名和密碼是否正確,需要根據(jù)用戶輸入的用戶名和密碼從數(shù)據(jù)庫中查詢用戶信息,如果有信息返回,表明用戶名和密碼正確;否則不正確。程序中使用了 adocommand 對(duì)象執(zhí)行
40、查詢操作。在使用 adocommand 對(duì)象時(shí),首先需要設(shè)置activeconnection 屬性,該屬性關(guān)聯(lián)一個(gè) adocommand 對(duì)象,然后設(shè)置 commandtext 屬性,該屬性表示 adocommand 對(duì)象要執(zhí)行的 sql 語句。如果 sql 語句中有參數(shù),還需要調(diào)用 parameters 屬性的 append 方法插入?yún)?shù),最后調(diào)用 adocommand 對(duì)象的 execute 方法執(zhí)行 sql 語句。代碼如下:_parameterptr puser,ppassword;cserverapp *papp=(cserverapp*)afxgetapp();puser=papp-
41、m_datamanage.m_pcommand-createparameter(user,advarwchar,adparaminput, 100,(_bstr_t)user);ppassword=papp-m_datamanage.m_pcommand-createparameter(password,advarwchar,adparaminput, 100,(_bstr_t)password);papp-m_datamanage.m_pconnection-cursorlocation=aduseserver;papp-m_datamanage.m_pcommand-activeconne
42、ction=papp-m_datamanage.m_pconnection;papp-m_datamanage.m_pcommand-parameters-append(puser);papp-m_datamanage.m_pcommand-parameters-append(ppassword);/cstring sql=select *from tb_userinfo where username=+user+ and password=+password+;papp-m_datamanage.m_pcommand-commandtext=select *from tb_userinfo
43、where username=user and password=password;/_recordsetptr precord=null;precord=papp-m_datamanage.m_pcommand-execute(0,null,adcmdtext);papp-m_datamanage.m_pcommand-parameters-delete(user);papp-m_datamanage.m_pcommand-parameters-delete(password);5.3 系統(tǒng)登錄模塊實(shí)現(xiàn)過程系統(tǒng)登錄模塊實(shí)現(xiàn)過程1、 創(chuàng)建一個(gè)對(duì)話框,如下圖: 2、 修改對(duì)話框類的 pretra
44、nslatemessage 虛方法,當(dāng)編輯框獲得焦點(diǎn)時(shí),按 enter 鍵控制焦點(diǎn)移動(dòng)。bool clogindlg:pretranslatemessage(msg* pmsg) if (pmsg-message=wm_keydown & pmsg-wparam=vk_return )cstring str;/獲取類名getclassname(pmsg-hwnd,str.getbuffer(0),max_path);if (str=edit)pmsg-wparam = vk_tab ;return cdialog:pretranslatemessage(pmsg);3、 處理“登錄”按
45、鈕的單擊事件,驗(yàn)證用戶名和密碼是否正確。如果用戶名和密碼正確,關(guān)閉對(duì)話框并返回 idok。void clogindlg:onlogin() / todo: add your control notification handler code herecstring user,password;m_username.getwindowtext(user);m_password.getwindowtext(password);if(user.isempty()|password.isempty()messagebox(用戶或密碼不能為空!);m_username.setfocus();else_p
46、arameterptr puser,ppassword;cserverapp *papp=(cserverapp*)afxgetapp();puser=papp-m_datamanage.m_pcommand-createparameter(user,advarwchar,adparaminput, 100,(_bstr_t)user);ppassword=papp-m_datamanage.m_pcommand-createparameter(password,advarwchar,adparaminput, 100,(_bstr_t)password);papp-m_datamanage.
47、m_pconnection-cursorlocation=aduseserver;papp-m_datamanage.m_pcommand-activeconnection=papp-m_datamanage.m_pconnection;papp-m_datamanage.m_pcommand-parameters-append(puser);papp-m_datamanage.m_pcommand-parameters-append(ppassword);/cstring sql=select *from tb_userinfo where username=+user+ and passw
48、ord=+password+;papp-m_datamanage.m_pcommand-commandtext=select *from tb_userinfo where username=user and password=password;/需要解釋_recordsetptr precord=null;precord=papp-m_datamanage.m_pcommand-execute(0,null,adcmdtext);papp-m_datamanage.m_pcommand-parameters-delete(user);papp-m_datamanage.m_pcommand-
49、parameters-delete(password);if(precord!=null)trycstring str=(char*)(_bstr_t)precord-getfields()-getitem(username)-value;/messagebox(str);precord-close();catch(.)messagebox(用戶名或密碼不正確!);/m_username.getfocus();出錯(cuò)的一個(gè)地方m_username.setfocus();precord -close();return ;enddialog(idok);elsemessagebox(用戶名或密碼不正
50、確);/m_username.getfocus();出錯(cuò)的一個(gè)地方m_username.setfocus();precord -close();void clogindlg:oncancel() / todo: add extra cleanup herecdialog:oncancel();第六章第六章 主窗體設(shè)計(jì)主窗體設(shè)計(jì)6.1 主窗體概述主窗體概述 局域網(wǎng)監(jiān)控系統(tǒng)服務(wù)器端主窗體主要顯示客戶端發(fā)來的位圖信息,并且控制客戶端抓圖的起始坐標(biāo)。6.2 主窗體的實(shí)現(xiàn)過程主窗體的實(shí)現(xiàn)過程1、 向?qū)υ捒蝾愔刑砑尤缦鲁蓡T變量。 socket m_socket; char *m_bmpdata; char
51、 *m_tempdata; char *head; bool m_showbmp; int m_bmpsize; int m_recsize; cstring m_clientip; uint m_clientport; word m_lefttopx; word m_lefttopy;2、 自定義一個(gè)消息,用于自套接字有數(shù)據(jù)時(shí)發(fā)送到主窗口中。 #define cm_received wm_user+10013、 想對(duì)話框中添加 showimage 方法,顯示位圖數(shù)據(jù)。 void cserverdlg:showimage() if(m_showbmp)bitmapinfo binfo;memc
52、py(&binfo,m_tempdata,sizeof(binfo);int x=binfo.bmiheader.biwidth;int y=binfo.bmiheader.biheight;stretchdibits(m_bk.getdc()-m_hdc,0,0,x,y,0,0,x,y,&m_tempdatasizeof(bitmapinfo),&binfo,dib_rgb_colors,srccopy);4、 向?qū)υ捒蛑刑砑?onreceived 方法,用于接收客戶端發(fā)來的數(shù)據(jù)。在數(shù)據(jù)接收后,向客戶端發(fā)送確認(rèn)信息。void cserverdlg:onreceived
53、() char *buffer=new charmax_buff; sockaddr_in addr; int factsize=sizeof(addr); int ret=recvfrom(m_socket,buffer,1050,0,(sockaddr*)&addr,&factsize); if(ret!=-1) cstring recip=inet_ntoa(addr.sin_addr); /messagebox(recip); if(recip!=m_clientip) /messagebox(m_clientip); delete buffer; return; m_
54、clientport=ntohs(addr.sin_port); m_recsize+=ret; word orderid=*(word*)&buffer0; word endid=*(word*)&buffer2; int bmpsize=*(int *)&bufferret-12; m_lefttopx=*(word*)&bufferret-8; m_lefttopy=*(word*)&bufferret-6; sockaddr_in addr1; addr1.sin_addr.s_un.s_addr=inet_addr(m_clientip.get
55、buffer(0); addr1.sin_port=htons(m_clientport); addr1.sin_family=af_inet; int size=sizeof(addr1); char *pdata=confirm; sendto(m_socket,pdata,8,0,(sockaddr*)&addr1,size); if(orderid=0) m_bmpsize=bmpsize; m_bmpdata=head; else m_bmpsize+=bmpsize; memcpy(m_bmpdata,&buffer4,bmpsize); m_bmpdata+=bm
56、psize; m_showbmp=false; if(endid=1) m_showbmp=true; m_bmpdata=head; memcpy(m_tempdata,head,1024*1024); showimage(); delete buffer;5、 在對(duì)話框的消息映射部分手動(dòng)添加一個(gè)消息映射,用于將 cm_received 與onreceived 方法聯(lián)系起來。如下:on_message(cm_received,onreceived)6、 向?qū)υ捒蛑刑砑?onbuttondown 方法,用于向客戶端發(fā)送控制指令。void cserverdlg:onbuttondown(uint
57、 nid) if(!m_clientip.isempty() word x=m_lefttopx; word y=m_lefttopy; char buffer4; sockaddr_in addr; addr.sin_family=af_inet; addr.sin_port=htons(m_clientport); addr.sin_addr.s_un.s_addr=inet_addr(m_clientip.getbuffer(0); int size=sizeof(addr); switch(nid) case idc_btdown: y=m_lefttopy+100; *(word*)
58、&buffer0=x; *(word*)&buffer2=y; int ret=sendto(m_socket,buffer,4,0,(sockaddr*)&addr,size); break; case idc_btup: y=m_lefttopy-100; *(word*)&buffer0=x; *(word*)&buffer2=y; int ret=sendto(m_socket,buffer,4,0,(sockaddr*)&addr,size); break; case idc_btleft: x=m_lefttopx-100; *(wo
59、rd*)&buffer0=x; *(word*)&buffer2=y; int ret=sendto(m_socket,buffer,4,0,(sockaddr*)&addr,size); break; case idc_btright: x=m_lefttopx+100; *(word*)&buffer0=x; *(word*)&buffer2=y; int ret=sendto(m_socket,buffer,4,0,(sockaddr*)&addr,size); break; case idc_btrestore: *(word*)&
60、;buffer0=0; *(word*)&buffer2=0; int ret=sendto(m_socket,buffer,4,0,(sockaddr*)&addr,size); break; 7、 在對(duì)話框的消息映射部分添加一個(gè) on_command_range 消息映射宏,用以處理按鈕單擊事件。 on_command_range(idc_btrestore,idc_btright,onbuttondown)8、 在對(duì)話框的初始化函數(shù)中創(chuàng)建并綁定套接字,從數(shù)據(jù)庫中讀取客戶端 ipbool cserverdlg:oninitdialog()cdialog:oninitdialog();sockaddr_in addr;addr.sin_family = af_inet;/addr.sin_addr.s_un.s_addr = inet_addr(localip);addr.sin_addr.s_un.s_addr = inet_addr(127
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版4S店新能源汽車預(yù)訂合同樣本2篇
- 音樂舞蹈跨界合作-洞察分析
- 幼師勞動(dòng)合同書
- 二零二五年度食品企業(yè)危機(jī)管理與公關(guān)服務(wù)合同
- 企業(yè)信用反擔(dān)保合同
- 混凝土水溝勞務(wù)合同
- 二零二五年度咖啡館連鎖品牌合作承包合同3篇
- 二零二五年挖掘機(jī)買賣合同含綠色能源改造與節(jié)能措施3篇
- 二零二五年度客??蜅M\噲?chǎng)管理合同3篇
- 2024版代持股轉(zhuǎn)讓過程中法律風(fēng)險(xiǎn)防范與合同范本3篇
- 菏澤2024年山東菏澤市中心血站招聘15人筆試歷年典型考點(diǎn)(頻考版試卷)附帶答案詳解版
- 供熱通風(fēng)與空調(diào)工程施工企業(yè)生產(chǎn)安全事故隱患排查治理體系實(shí)施指南
- 精-品解析:廣東省深圳市羅湖區(qū)2023-2024學(xué)年高一上學(xué)期期末考試化學(xué)試題(解析版)
- 記賬實(shí)操-基金管理公司的會(huì)計(jì)處理分錄示例
- 中國慢性便秘診治指南
- 沐足行業(yè)嚴(yán)禁黃賭毒承諾書
- 2025年蛇年紅色喜慶中國風(fēng)春節(jié)傳統(tǒng)節(jié)日介紹
- 河北省承德市2023-2024學(xué)年高一上學(xué)期期末物理試卷(含答案)
- 電梯維修保養(yǎng)報(bào)價(jià)書模板
- 危險(xiǎn)化學(xué)品目錄2023
- FZ/T 81024-2022機(jī)織披風(fēng)
評(píng)論
0/150
提交評(píng)論