

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 2009 — 2010學(xué)年第 三 學(xué)期</p><p> 題目 局域網(wǎng)監(jiān)控系統(tǒng)</p><p> 畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)</p><p> 畢業(yè)設(shè)計(jì)(論文)題目(來(lái)源、類型)</p><p> 局域網(wǎng)
2、監(jiān)控系統(tǒng)(B、X) </p><p> 畢業(yè)設(shè)計(jì)(論文)工作內(nèi)容與基本要求(目標(biāo)、任務(wù)、途徑、方法、成果形式,應(yīng)掌握的原始資料(數(shù)據(jù))、參考資料(文獻(xiàn))以及設(shè)計(jì)技術(shù)要求、注意事項(xiàng)等)</p><p> 為高效、便利的進(jìn)行局域網(wǎng)監(jiān)控,研制基于UDP協(xié)議,該系統(tǒng)功能如下:</p><p> 1.注冊(cè)、修改
3、個(gè)人資料功能。 </p><p> 2.對(duì)客戶端數(shù)據(jù)進(jìn)行選擇性的過(guò)濾 </p><p> 3.用戶資料管理
4、 </p><p> 4.管理員權(quán)限管理 </p><p> 5. 用戶桌面的信息
5、 </p><p> 本系統(tǒng)采用VC6.0+Acess2000進(jìn)行開(kāi)發(fā)。 </p><p> 希望能支持多方面問(wèn)卷、有用戶交流頁(yè)面(論壇或留言板) </p><p> 在研制中希望能體現(xiàn)VC++ 的獨(dú)特優(yōu)點(diǎn),也希望能在居于網(wǎng)的安全性上有所研究 <
6、/p><p><b> 教研室審批意見(jiàn):</b></p><p><b> 審批人簽名:</b></p><p> 備注:(1)來(lái)源:A—教師擬訂;B—學(xué)生建議;C—企業(yè)和社會(huì)征集;D—實(shí)習(xí)單位提供</p><p> ?。?)類型:X—真實(shí)課題;Y—模擬課題;Z—虛擬課題</p>&
7、lt;p> 中州大學(xué)信息工程學(xué)院設(shè)計(jì)(論文)開(kāi)題報(bào)告</p><p><b> 課題名稱:</b></p><p> 局域網(wǎng)監(jiān)控系統(tǒng) </p><p> 指導(dǎo)教師: 王學(xué)軍 職稱: 副教授 學(xué)生人數(shù): 1人
8、</p><p> 學(xué)生姓名(學(xué)號(hào)、專業(yè)):姓名:曲利賓 學(xué)號(hào):200702131051131 專業(yè):信息安全技術(shù) </p><p><b> 開(kāi)題報(bào)告內(nèi)容: </b></p><p> 設(shè)計(jì)的
9、目的及意義:隨著信息化的不斷擴(kuò)展,大部分企業(yè)都采用計(jì)算機(jī)來(lái)管理自己的財(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)控。
10、 </p><p> 設(shè)計(jì)的要求:(1)學(xué)會(huì)如何分割UDP數(shù)據(jù)報(bào);(2)學(xué)會(huì)發(fā)送和接受UDP數(shù)據(jù)報(bào);(3)學(xué)會(huì)自定義控件;(4)學(xué)會(huì)抓取屏幕(5)學(xué)會(huì)ADO技術(shù)對(duì)數(shù)據(jù)庫(kù)操作
11、 </p><p> 預(yù)期成果:(1)將客戶端隱藏,并且不斷向服務(wù)器端發(fā)送屏幕信息;(2)通過(guò)發(fā)送指令來(lái)控制客戶端發(fā)來(lái)屏幕信息的位置;(3)通過(guò)ADO技術(shù)實(shí)現(xiàn)對(duì)ACCess數(shù)據(jù)庫(kù)操作 </p>&
12、lt;p> 時(shí)間安排:9月20號(hào)-----10月15號(hào)熟悉課題的基本要求,查閱相關(guān)的資料,初步擬定設(shè)計(jì)的整體方案,完成開(kāi)題報(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ì)的完成。
13、 </p><p> 在王老師的指導(dǎo)下,綜合我們以前所學(xué)的專業(yè)知識(shí)及查找的相關(guān)資料,能夠在預(yù)期的時(shí)間內(nèi)完成整個(gè)網(wǎng)站和論文。
14、
15、 </p><p> 指導(dǎo)教師簽名: 日期: </p><p> 備注:(1)來(lái)源:A
16、—教師擬訂;B—學(xué)生建議;C—企業(yè)和社會(huì)征集;D—實(shí)習(xí)單位提供</p><p> (2)類型:X—真實(shí)課題;Y—模擬課題;Z—虛擬課題</p><p><b> 摘 要</b></p><p> Internet在我國(guó)剛剛起步時(shí),上網(wǎng)人群主要是從事IT技術(shù)的專業(yè)人員,年齡段多是中年人,但是隨著Internet技術(shù)的快速發(fā)展,我國(guó)的上網(wǎng)人
17、群年齡逐年增多,不僅包括中年人,青少年及老年人在上網(wǎng)人群的比重不斷增加。Internet上豐富的資源給人們帶來(lái)了很多的方便,但是也存在許多不良的信息危害青少年的健康,一些家長(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)頁(yè)信息,對(duì)青少年上網(wǎng)起到監(jiān)督作用。</p><p> 本文首先介紹了問(wèn)題的背景,接著提出問(wèn)題,并針對(duì)具體項(xiàng)目展開(kāi)需
18、求調(diào)查分析;再基于需求設(shè)計(jì)出具體的方案;然后對(duì)整個(gè)系統(tǒng)進(jìn)行了詳細(xì)的分析和設(shè)計(jì),在設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中,結(jié)合源代碼具體的描述出整個(gè)項(xiàng)目的開(kāi)發(fā)過(guò)程;最后對(duì)整個(gè)系統(tǒng)進(jìn)行測(cè)試得出測(cè)試結(jié)論。</p><p> 關(guān)鍵字:屏幕監(jiān)控;數(shù)據(jù)過(guò)濾</p><p><b> Abstract</b></p><p> The Internet in China h
19、as just started, IT is mainly engaged in the Internet population technology professionals, the age is more middle-aged, but with the rapid development of Internet technology, online population increased year by year, not
20、 only include age, teenagers and the elderly in middle-aged people increase the proportion of Internet. Abundant natural resources in the Internet has brought people a lot of convenience, but there are also many bad info
21、rmation of health hazards, some paren</p><p> 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 speci
22、fic requirements to design the plan, Then the whole system to carry on the detailed analysis and design, design and implementation process, combined with a specific description of the source of the development process of
23、 project, Finally to the whole system test that test conclusions.</p><p> Key words: Monitor screen Data filtering</p><p><b> 第一章 緒論8</b></p><p> §1.1 問(wèn)題背景8&l
24、t;/p><p> §1.2 研究范圍及技術(shù)要求8</p><p> §1.2.1 研究范圍8</p><p> §1.2.2 技術(shù)要求8</p><p> 第二章 系統(tǒng)設(shè)計(jì)10</p><p> §2.1 需求分析10</p><p>
25、 §2.2 系統(tǒng)目標(biāo)10</p><p> §2.3 系統(tǒng)功能結(jié)構(gòu)10</p><p> §2.3 系統(tǒng)預(yù)覽11</p><p> §2.4 業(yè)務(wù)流程圖13</p><p> §2.5程序運(yùn)行環(huán)境14</p><p> §2.5數(shù)據(jù)庫(kù)設(shè)計(jì)
26、14</p><p> 第三章 客戶端設(shè)計(jì)15</p><p> §3.1客戶端模塊概述15</p><p> §3.2客戶端技術(shù)分析15</p><p> §3.3客戶端實(shí)現(xiàn)過(guò)程16</p><p> 第四章 公共類設(shè)計(jì)20</p><p>
27、 第五章 系統(tǒng)登錄模塊設(shè)計(jì)20</p><p> §5.1系統(tǒng)登錄模塊概述20</p><p> §5.2系統(tǒng)登錄模塊技術(shù)分析21</p><p> §5.3系統(tǒng)登錄模塊實(shí)現(xiàn)過(guò)程21</p><p> 第六章 主窗體設(shè)計(jì)24</p><p> §6.1主窗體概
28、述24</p><p> §6.2主窗體的實(shí)現(xiàn)過(guò)程24</p><p> 第七章 操作員管理模塊設(shè)計(jì)28</p><p> §7.1操作員模塊概述28</p><p> §7.2操作員模塊技術(shù)分析29</p><p> §7.3操作員模塊實(shí)現(xiàn)過(guò)程29<
29、/p><p> 第八章 系統(tǒng)設(shè)置模塊設(shè)計(jì)36</p><p> §8.1系統(tǒng)設(shè)置模塊概述36</p><p> §8.2系統(tǒng)設(shè)置模塊實(shí)現(xiàn)過(guò)程36</p><p><b> }37</b></p><p> 第九章 開(kāi)發(fā)技巧與難點(diǎn)分析37</p>&
30、lt;p> §9.1及時(shí)關(guān)閉記錄集37</p><p> §9.2訪問(wèn)帶密碼的Access數(shù)據(jù)庫(kù)38</p><p> §9.3防止SQL注入攻擊38</p><p> §9.4ON_COMMAND_RANGE宏的注意事項(xiàng)39</p><p> §9.5收獲與體會(huì)39
31、</p><p><b> 致謝39</b></p><p><b> 參考文獻(xiàn)40</b></p><p><b> 第一章 緒論</b></p><p><b> §1.1 問(wèn)題背景</b></p><p>
32、; Internet在我國(guó)剛剛起步時(shí),上網(wǎng)人群主要是從事IT技術(shù)的專業(yè)人員,年齡段多是中年人,但是隨著Internet技術(shù)的快速發(fā)展,我國(guó)的上網(wǎng)人群年齡逐年增多,不僅包括中年人,青少年及老年人在上網(wǎng)人群的比重不斷增加。Internet上豐富的資源給人們帶來(lái)了很多的方便,但是也存在許多不良的信息危害青少年的健康,一些家長(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í)了解青少年
33、瀏覽的網(wǎng)頁(yè)信息,對(duì)青少年上網(wǎng)起到監(jiān)督作用。</p><p> §1.2 研究范圍及技術(shù)要求</p><p> §1.2.1 研究范圍 </p><p> 設(shè)計(jì)該系統(tǒng)的功能模塊劃分,使用Acesss 2003設(shè)計(jì)出該系統(tǒng)的數(shù)據(jù)庫(kù)。</p><p> 參考實(shí)際局域網(wǎng)監(jiān)控系統(tǒng),完成對(duì)系統(tǒng)的需求分析及設(shè)計(jì)文檔。</
34、p><p> 根據(jù)需求分析及設(shè)計(jì)文檔完成代碼編制。</p><p> §1.2.2 技術(shù)要求 </p><p><b> 功能模塊劃分合理。</b></p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)滿足功能要求。</p><p> 采用UDP協(xié)議進(jìn)行數(shù)據(jù)傳輸。</p><p>
35、 對(duì)客戶端的數(shù)據(jù)進(jìn)行過(guò)濾。</p><p> 建立數(shù)據(jù)庫(kù)訪問(wèn)接口類,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。</p><p> 6. 實(shí)時(shí)抓取客戶端的屏幕信息。</p><p><b> 第二章 系統(tǒng)設(shè)計(jì)</b></p><p><b> §2.1 需求分析</b></p><
36、p> 局域網(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ā)送和接受。由于屏幕信息需要時(shí)時(shí)顯示,因此信息的傳輸速度要快,屏幕信息要時(shí)時(shí)發(fā)送。為此,選擇UDP協(xié)議進(jìn)行傳輸。為了防止服務(wù)器端隨意的接收客戶端發(fā)來(lái)的數(shù)據(jù)報(bào),服務(wù)器端需要對(duì)發(fā)來(lái)的數(shù)據(jù)報(bào)進(jìn)行過(guò)濾,只有是制定的客戶端才接收數(shù)據(jù)。</p><p><b> §2.2 系統(tǒng)目標(biāo)</b>
37、</p><p> 本系統(tǒng)屬于小型的局域網(wǎng)監(jiān)控系統(tǒng),可以對(duì)某一臺(tái)計(jì)算機(jī)進(jìn)行屏幕監(jiān)控。本系統(tǒng)主要實(shí)現(xiàn)一下目標(biāo):</p><p> 系統(tǒng)采用人機(jī)交互的方式,界面美觀友好。</p><p> 屏幕信息需要時(shí)時(shí)顯示,網(wǎng)絡(luò)延時(shí)不能大于1秒。</p><p> 服務(wù)器端可以隨時(shí)運(yùn)行,只要客戶端運(yùn)行,就能夠顯示屏幕信息。</p>&l
38、t;p> 系統(tǒng)運(yùn)行時(shí)占用內(nèi)存不能大于10MB,以免影響系統(tǒng)的性能。</p><p> 客戶端運(yùn)行時(shí)需要隱藏顯示窗口,其感覺(jué)不到在運(yùn)行。</p><p> §2.3 系統(tǒng)功能結(jié)構(gòu)</p><p> 局域網(wǎng)監(jiān)控系統(tǒng)功能結(jié)構(gòu)圖如下所示。</p><p><b> §2.3 系統(tǒng)預(yù)覽</b>&
39、lt;/p><p> 局域網(wǎng)監(jiān)控系統(tǒng)分為客戶端和服務(wù)器端兩部分,其中客戶端運(yùn)行時(shí)將窗體隱身,服務(wù)器端主要有四個(gè)窗體組成,分別為主窗體、操作員管理窗體、系統(tǒng)登錄窗體、系統(tǒng)設(shè)置窗體。其中,主窗體用于接收并顯示屏幕信息。操作員管理窗體用于添加、修改、刪除操作員信息,</p><p> 系統(tǒng)登錄窗體用于系統(tǒng)在啟動(dòng)時(shí)驗(yàn)證用戶身份。系統(tǒng)設(shè)置窗體用于設(shè)置客戶端 IP。</p><p&
40、gt; 主 窗 體</p><p><b> 系統(tǒng)登錄窗體</b></p><p><b> 操作員管理窗體</b></p><p><b> 系統(tǒng)設(shè)置窗體</b></p><p> §2.4 業(yè)
41、務(wù)流程圖</p><p> §2.5程序運(yùn)行環(huán)境</p><p> 本系統(tǒng)對(duì)運(yùn)行環(huán)境有一定的要求,具體如下:</p><p> 系統(tǒng)開(kāi)發(fā)平臺(tái):Microsoft VC 6.0.</p><p> 系統(tǒng)開(kāi)發(fā)語(yǔ)言:C++</p><p> 數(shù)據(jù)庫(kù)軟件系統(tǒng)軟件:Microsoft Acess 2003&l
42、t;/p><p> 運(yùn)行平臺(tái):Windows XP</p><p> 分辨率:最佳效果1024*1280像素</p><p><b> §2.5數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p><b> 數(shù)據(jù)庫(kù)分析</b></p><p> 在開(kāi)發(fā)局域網(wǎng)監(jiān)控系統(tǒng)時(shí),使用數(shù)據(jù)
43、庫(kù)主要用于記錄操作員信息及客戶端信息,系統(tǒng)設(shè)計(jì)的數(shù)據(jù)量比較小,因此本系統(tǒng)采用的Microsoft Access2003作為后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名字為db_Video,其中包含了2張表</p><p><b> 數(shù)據(jù)庫(kù)概念設(shè)計(jì)</b></p><p> 數(shù)據(jù)庫(kù)概念設(shè)計(jì)是根據(jù)各個(gè)模塊的需求“抽象”出數(shù)據(jù)實(shí)體的過(guò)程,也就是宏觀上用文字、圖表描述數(shù)據(jù)表的過(guò)程。</p&
44、gt;<p> 為了增加系統(tǒng)的安全性,服務(wù)器端設(shè)置了登錄窗口,在系統(tǒng)啟動(dòng)時(shí)彈出該窗口,要求用戶輸入操作員名稱和密碼。其中用戶的操作員名稱和密碼信息存儲(chǔ)在數(shù)據(jù)表中。這樣在系統(tǒng)登錄模塊就需要一個(gè)操作員信息實(shí)體。</p><p> 為了過(guò)濾服務(wù)器端接受的數(shù)據(jù)報(bào),時(shí)期值接收制定客戶端發(fā)來(lái)的數(shù)據(jù),需要存儲(chǔ)客戶端IP,為此,需要單獨(dú)設(shè)計(jì)一個(gè)客戶端信息實(shí)體對(duì)象。</p><p><
45、;b> 第三章 客戶端設(shè)計(jì)</b></p><p> §3.1客戶端模塊概述</p><p> 局域網(wǎng)監(jiān)控系統(tǒng)分為客戶端和服務(wù)器端兩大模塊,其中,客戶端的主要作用是時(shí)時(shí)抓取本機(jī)的屏幕信息,將其分成多個(gè)數(shù)據(jù)報(bào),發(fā)送到服務(wù)器端。為了保證屏幕信息能夠完整的發(fā)送到服務(wù)器,客戶端在發(fā)送一個(gè)數(shù)據(jù)報(bào)后,需要等待服務(wù)器端發(fā)來(lái)的確認(rèn)信息,然后繼續(xù)發(fā)送下一個(gè)數(shù)據(jù)報(bào)。</
46、p><p> §3.2客戶端技術(shù)分析</p><p> 客戶端要實(shí)現(xiàn)屏幕信息的發(fā)送,要解決兩個(gè)關(guān)鍵問(wèn)題:一是獲取屏幕信息,將其轉(zhuǎn)換為位圖格式;二是將位圖信息發(fā)送到服務(wù)器。</p><p> 將屏幕信息轉(zhuǎn)換為位圖格式</p><p> CDC* pDeskDC = GetDesktopWindow()->GetDC();
47、//獲取桌面畫(huà)布對(duì)象</p><p><b> CRect rc;</b></p><p> GetDesktopWindow()->GetClientRect(rc);//獲取屏幕的客戶區(qū)域</p><p> int width = 300;//獲取屏幕的寬度</p><p>
48、 int height = 300;//獲取屏幕的高度</p><p> CDC memDC;//定義一個(gè)內(nèi)存畫(huà)布</p><p> memDC.CreateCompatibleDC(pDeskDC);//創(chuàng)建一個(gè)兼容的畫(huà)布</p><p> CBitmap bmp;</p><p>
49、; bmp.CreateCompatibleBitmap(pDeskDC,width,height);//創(chuàng)建兼容位圖</p><p> memDC.SelectObject(&bmp);//選中位圖對(duì)象</p><p> BITMAP bitmap; //定義位圖信息</p>
50、;<p> bmp.GetBitmap(&bitmap); //獲取位圖信息</p><p> memDC.BitBlt(0,0,width,height,pDeskDC,m_X,m_Y,SRCCOPY);//將屏幕信息輸出到位圖</p><p> 根據(jù)位圖對(duì)象獲取位圖信息</p><p
51、> 一個(gè)位圖文件通常有“位圖文件頭”、“位圖信息頭”、“調(diào)色板”和“實(shí)際位圖數(shù)據(jù)”4個(gè)部分組成。其中“位圖文件頭” 包含BMP圖像文件的類型、顯示內(nèi)容、位圖標(biāo)記、位圖大小等信息,在程序中使用BITMAPFILEHEADER結(jié)構(gòu)來(lái)表示?!拔粓D信息頭”和“調(diào)色板”2個(gè)部分描述了位圖的寬度、高度、是否壓縮、位圖顏色等信息,在程序中使用BITMAPINFO結(jié)構(gòu)描述。由于程序發(fā)送的位圖不是以文件形式發(fā)送的,只需要發(fā)送位圖位圖信息頭、調(diào)色板
52、和實(shí)際數(shù)據(jù)就可以了,因此不需要位圖文件頭。</p><p> int panelsize = 0;//記錄調(diào)色板大小</p><p> if (bitmap.bmBitsPixel<16)//判斷是否為真彩色位圖</p><p> panelsize = pow(2,bitmap.bmBitsPixel*sizeof(R
53、GBQUAD));</p><p> BITMAPINFO *pBInfo = (BITMAPINFO*)LocalAlloc(LPTR,sizeof(BITMAPINFO)+panelsize);</p><p> pBInfo->bmiHeader.biBitCount = bitmap.bmBitsPixel;//設(shè)置位圖顏色用到的位數(shù)</p><p&g
54、t; pBInfo->bmiHeader.biClrImportant = 0;//指定顯示位圖顏色的種類,如果值為0,所有的顏色種類都需要</p><p> pBInfo->bmiHeader.biCompression = 0;//指定位圖的壓縮類型-- “該語(yǔ)句=0”說(shuō)明改為圖不進(jìn)行壓縮</p><p> pBInfo->bmiHeader.biHeig
55、ht = height;//指定位圖的高度</p><p> pBInfo->bmiHeader.biPlanes = bitmap.bmPlanes;//為目標(biāo)設(shè)備指定調(diào)色板的數(shù)量,且該值只能是1</p><p> pBInfo->bmiHeader.biSize = sizeof(BITMAPINFO);//設(shè)置BITMAP
56、INFO結(jié)構(gòu)大小</p><p> pBInfo->bmiHeader.biSizeImage = = bitmap.bmWidthBytes*bitmap.bmHeight;//設(shè)置圖像的大小</p><p> pBInfo->bmiHeader.biWidth = width;//指定位圖的寬度</p><p> pB
57、Info->bmiHeader.biXPelsPerMeter = 0;//目標(biāo)設(shè)備的水平分辨率</p><p> pBInfo->bmiHeader.biYPelsPerMeter = 0;//目標(biāo)設(shè)備的垂直分辨率</p><p> m_X = m_RecX;</p><p> m_Y = m_RecY;</p><p>
58、 三、將位圖信息發(fā)送到服務(wù)器</p><p> 因?yàn)閷D片信息傳送到服務(wù)器端要求的實(shí)時(shí)性比較強(qiáng),所以采用UDP協(xié)議將位圖信息發(fā)送到服務(wù)器</p><p> §3.3客戶端實(shí)現(xiàn)過(guò)程</p><p> 創(chuàng)建一個(gè)基于對(duì)話框的工程,名稱為Client。</p><p> 在Stafx.h文件中引入套接字庫(kù)。</p>
59、<p> 在應(yīng)用程序類的Instance函數(shù)中初始化套接字</p><p> WSADATA data;</p><p> WSAStartup(2,&data);</p><p> 改寫(xiě)應(yīng)用程序類的虛方法ExitInstance</p><p> int CClientApp::ExitInstance() &l
60、t;/p><p><b> {</b></p><p> WSACleanup(); //清理套接字資源</p><p> return CWinApp::ExitInstance();</p><p><b> }</b></p><p> 在對(duì)話框類中添加
61、如下成員變量</p><p> SOCKET m_Socket;//客戶端套接字</p><p> CString m_ServerIP;//服務(wù)器IP</p><p> int m_X,m_Y;//抓起屏幕的起始坐標(biāo)</p><p> WORD m_RecX,m_RecY;//收到服務(wù)器發(fā)來(lái)的抓起屏幕的起始坐標(biāo)</p>
62、<p> BOOL m_Confirm;//確認(rèn)信息</p><p> int m_FrameIndex;//記錄索引</p><p> int count;//每一個(gè)位圖分報(bào)的數(shù)量</p><p> int bmpsize;//位圖的實(shí)際大小</p><p> int mod;//記錄余數(shù)</p><
63、;p> char *pSendBuf;//發(fā)送緩沖區(qū)指針</p><p> char *Head;//臨時(shí)指針</p><p> sockaddr_in addrl;//套接字地址</p><p> BOOL m_Received;//是否受到服務(wù)器發(fā)來(lái)的確認(rèn)信息</p><p> int m_Counter;//計(jì)數(shù)器<
64、;/p><p> 6、在對(duì)話框的初始化函數(shù)中,創(chuàng)建套接字將其綁定到指定位置,并初始化相應(yīng)的成員變量</p><p> BOOL CClientDlg::OnInitDialog()</p><p><b> {</b></p><p> hostent *phost=gethostbyname(""
65、;);</p><p> char *localIP=inet_ntoa(*(struct in_addr*)*phost->h_addr_list);</p><p> sockaddr_in addr;</p><p> addr.sin_family=AF_INET;</p><p> addr.sin_addr.S_un
66、.S_addr=inet_addr(localIP);</p><p> addr.sin_port=htons(5001);</p><p> m_Socket=socket(AF_INET,SOCK_DGRAM,0);</p><p> if(m_Socket==INVALID_SOCKET)</p><p><b>
67、{</b></p><p> MessageBox("套接字創(chuàng)建失敗!");</p><p><b> }</b></p><p> if(bind(m_Socket,(sockaddr*)&addr,sizeof(addr))==SOCKET_ERROR)</p><p>
68、<b> {</b></p><p> MessageBox("綁定套接字失??!");</p><p><b> }</b></p><p> m_ServerIP="127.0.0.1";</p><p> GetPrivateProfileStr
69、ing("ServerInfo","IP","127.0.0.1",m_ServerIP.GetBuffer(0),MAX_PATH,"./server.ini");//讀取INI配置文件</p><p> WSAAsyncSelect(m_Socket,m_hWnd,CM_RECEIVED,FD_READ);//該函數(shù)的功能是在套
70、接字m_Socket上,看是否有讀取事件發(fā)生如果有,向窗口句柄為m_hWnd的窗口發(fā)送CM_RECEIVED消息</p><p> m_X=m_Y=0;</p><p> m_RecX=m_RecY=0;</p><p> m_Confirm=true;</p><p> pSendBuf=new char[1024*1024*2];
71、</p><p> Head=pSendBuf;</p><p><b> Onok();</b></p><p> m_Received=false;</p><p> m_Counter=0;</p><p> SetTimer(1,1000,NULL);</p>&l
72、t;p> return TRUE; // return TRUE unless you set the focus to a control</p><p><b> }</b></p><p> 自定義一個(gè)消息,當(dāng)套接字接到數(shù)據(jù)時(shí),將該消息發(fā)送到主窗口</p><p> #define GraphSize 1024</
73、p><p> #define CM_RECEIVED WM_USER+200 //自定的消息CM_RECEIVED</p><p> 添加OnReceived()方法,該方法的作用是:接收服務(wù)器端發(fā)來(lái)的確認(rèn)信息和控制信息</p><p> void CClientDlg::OnReceived()</p><p><b> {
74、</b></p><p> char *pData=new char[1024];</p><p> memset(pData,0,1024);</p><p> sockaddr_in addr;</p><p> int factsize=sizeof(sockaddr);</p><p>
75、int ret=recvfrom(m_Socket,pData,1024,0,(sockaddr*)&addr,&factsize);</p><p> if(ret!=-1) //判斷是否接收成功</p><p><b> {</b></p><p> if(ret==4) //方向指令</p>&l
76、t;p><b> {</b></p><p> m_RecX=*(WORD*)&pData[0]; //填充屏幕x坐標(biāo)</p><p> m_RecY=*(WORD*)&pData[2]; //填充屏幕y坐標(biāo)</p><p><b> }</b></p><
77、p> if(ret==8) //確認(rèn)指令</p><p><b> {</b></p><p> m_Received=TRUE;</p><p> m_FrameIndex+=1; //將發(fā)送的數(shù)據(jù)報(bào)的序號(hào)加1</p><p> if(m_FrameIndex<coun
78、t) //判斷數(shù)據(jù)是否發(fā)送完</p><p> SendData(m_FrameIndex,mod,bmpsize,count,pSendBuf,addrl);</p><p><b> else</b></p><p> Onok(); //重新開(kāi)始發(fā)送數(shù)據(jù)</p><
79、;p><b> }</b></p><p><b> }</b></p><p> delete[] pData;</p><p><b> }</b></p><p> 將CM_RECEIVED消息和處理該消息的函數(shù)OnReceived關(guān)聯(lián)起來(lái)</p&g
80、t;<p> ON_MESSAGE(CM_RECEIVED,OnReceived)</p><p> 添加SendData方法,該方法的作用:將數(shù)據(jù)封成數(shù)據(jù)報(bào),將該數(shù)據(jù)報(bào)發(fā)送到指定地址</p><p> int CClientDlg::SendData(int index, int mod, int bmpsize, int frames, char *pSendBuf
81、, sockaddr_in &addr)</p><p><b> {</b></p><p><b> /*</b></p><p> index表示數(shù)據(jù)包的序列號(hào);mod表示余數(shù);bmpsize表示數(shù)據(jù)報(bào)中位圖數(shù)據(jù)的大小</p><p> frames表示總的發(fā)送次數(shù);addr表
82、示服務(wù)器地址;pSendBuf表示要發(fā)送數(shù)據(jù)的緩沖區(qū)</p><p><b> */</b></p><p> char *pPackage; //定義一個(gè)數(shù)據(jù)報(bào)指針</p><p> int packsize=0; //初始化數(shù)據(jù)報(bào)的大小</p>
83、<p> if(mod==0||index!=frames-1) //計(jì)算數(shù)據(jù)報(bào)的大小</p><p> packsize=2+2+bmpsize+4+2+2+4;</p><p><b> else</b></p><p> packsize=2+2+mod+4+2+2+4;</p><p&
84、gt; pPackage=new char[packsize];</p><p> memset(pPackage,0,packsize);</p><p> *(WORD*)&pPackage[0]=index; //填充序號(hào)</p><p> if(index!=frames-1)
85、 //填充結(jié)束標(biāo)記</p><p> *(WORD*)&pPackage[2]=0;</p><p><b> else</b></p><p> *(WORD*)&pPackage[2]=1;</p><p> pSendBuf+=index*bmpsize;
86、 //定位數(shù)據(jù)</p><p> memcpy(&pPackage[4],pSendBuf,packsize-16); //填充位圖數(shù)據(jù)</p><p> *(int*)&pPackage[packsize-12]=bmpsize; //填充位圖大小</p><p> *(WORD*)&pPackage[packsiz
87、e-8]=m_X; //填充屏幕x坐標(biāo)</p><p> *(WORD*)&pPackage[packsize-6]=m_Y; //填充屏幕y坐標(biāo)</p><p> *(int*)&pPackage[packsize-4]=packsize; //填充數(shù)據(jù)報(bào)大小</p><p> //m_Confirm=
88、false;</p><p> int ret=sendto(m_Socket,pPackage,packsize,0,(sockaddr*)&addr,sizeof(addr));</p><p> delete[] pPackage;</p><p> return ret;</p><p><b> }<
89、/b></p><p> 處理對(duì)話框的WM_TIMER消息,在發(fā)送數(shù)據(jù)后,如果5秒鐘內(nèi)沒(méi)有收到服務(wù)器端 發(fā)來(lái)的確認(rèn)信息,放棄當(dāng)前位圖的發(fā)送,重新抓取屏幕位圖并發(fā)送。</p><p> void CClientDlg::OnTimer(UINT nIDEvent) </p><p><b> {</b></p>&l
90、t;p> // TODO: Add your message handler code here and/or call default</p><p> if(!m_Received) //判斷是否接收到服務(wù)器發(fā)來(lái)的數(shù)據(jù)</p><p><b> {</b></p><p> m_Counter++;
91、 //計(jì)數(shù)器自加1</p><p> if(m_Counter>5)</p><p><b> {</b></p><p> m_Counter=0;</p><p><b> Onok();</b></p><p><b> }</b&
92、gt;</p><p><b> }</b></p><p> else //當(dāng)接收到服務(wù)器發(fā)來(lái)的數(shù)據(jù)</p><p><b> {</b></p><p> m_Received=FALSE;</p><p> m_Co
93、unter=0;</p><p><b> }</b></p><p> CDialog::OnTimer(nIDEvent);</p><p><b> }</b></p><p> 添加一個(gè)Onok方法,將屏幕信息轉(zhuǎn)化為位圖信息,劃分?jǐn)?shù)據(jù)報(bào)的格式,計(jì)算每個(gè) 位圖信息需要發(fā)送數(shù)據(jù)報(bào)
94、的次數(shù),調(diào)用SendData方法。</p><p> 在對(duì)話框類中的OnPaint函數(shù)中添加ShowWindow(SW_HIDE);將對(duì)話框隱藏。</p><p><b> 第四章 公共類設(shè)計(jì)</b></p><p> 在局域網(wǎng)監(jiān)控系統(tǒng)的服務(wù)器端需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。為了方便管理,將有關(guān)數(shù)據(jù)庫(kù)的操作封裝為一個(gè)類CDataManage。該
95、類中包含ADOConnection對(duì)象、ADOCommand對(duì)象和ADORecordset對(duì)象,被提供InitDatabase方法用于構(gòu)造ADO對(duì)象、連接數(shù)據(jù)庫(kù)。CDataManage類的具體實(shí)現(xiàn)過(guò)程如下:</p><p> 在visual C++工程中的Stdafx.h頭文件中導(dǎo)入msado15.dll動(dòng)態(tài)庫(kù)。</p><p> #import "C:\Program Fi
96、les\Common Files\System\ado\msado15.dll" no_namespacerename("EOF","ADOEof")</p><p> 創(chuàng)建一個(gè)普通類,命名為CDataManage,在該類中添加如下成員變量。</p><p> _ConnectionPtr m_pConnection;</p>
97、;<p> _CommandPtr m_pCommand;</p><p> _RecordsetPtr m_pRecord;</p><p> 向CDataManage類中添加InitDatabase方法構(gòu)造ADO對(duì)象,并連接數(shù)據(jù)庫(kù)。</p><p> BOOL CDataManage::InitDatebase()</p>&
98、lt;p><b> {</b></p><p> HRESULT hr;</p><p><b> try</b></p><p><b> {</b></p><p> hr = m_pConnection.CreateInstance("ADODB
99、.Connection");///創(chuàng)建Connection對(duì)象</p><p> m_pCommand.CreateInstance("ADODB.Command");</p><p> m_pRecord.CreateInstance("ADODB.Recordset");</p><p> if(SUCCE
100、EDED(hr))</p><p><b> {</b></p><p> hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db_Video.mdb","","",adModeUnknown);///連接數(shù)
101、據(jù)庫(kù)</p><p> ///上面一句中連接字串中的Provider是針對(duì)ACCESS2000環(huán)境的,對(duì)于ACCESS97,需要改為:Provider=Microsoft.Jet.OLEDB.3.51; }</p><p><b> }</b></p><p><b> }</b></p><p
102、> catch(_com_error e)///捕捉異常</p><p><b> {</b></p><p> CString errormessage;</p><p> errormessage.Format("連接數(shù)據(jù)庫(kù)失敗!\r\n錯(cuò)誤信息:%s",e.ErrorMessage());</p&g
103、t;<p> AfxMessageBox(errormessage);///顯示錯(cuò)誤信息</p><p> return FALSE;</p><p><b> } </b></p><p> return true;</p><p><b> }</b></p>
104、<p> 第五章 系統(tǒng)登錄模塊設(shè)計(jì)</p><p> §5.1系統(tǒng)登錄模塊概述</p><p> 為了防止非法用戶使用系統(tǒng),在局域網(wǎng)監(jiān)控系統(tǒng)的服務(wù)器端提供了系統(tǒng)登錄莫塊。在系統(tǒng)啟動(dòng)時(shí),只有輸入正確的用戶名和密碼才能進(jìn)入主界面。</p><p> §5.2系統(tǒng)登錄模塊技術(shù)分析</p><p> 為了驗(yàn)
105、證用戶輸入的用戶名和密碼是否正確,需要根據(jù)用戶輸入的用戶名和密碼從數(shù)據(jù)庫(kù)中查詢用戶信息,如果有信息返回,表明用戶名和密碼正確;否則不正確。程序中使用了ADOCommand對(duì)象執(zhí)行查詢操作。在使用ADOCommand對(duì)象時(shí),首先需要設(shè)置ActiveConnection屬性,該屬性關(guān)聯(lián)一個(gè)ADOCommand對(duì)象,然后設(shè)置CommandText屬性,該屬性表示ADOCommand對(duì)象要執(zhí)行的SQL語(yǔ)句。如果SQl語(yǔ)句中有參數(shù),還需要調(diào)用Pa
106、rameters屬性的Append方法插入?yún)?shù),最后調(diào)用ADOCommand對(duì)象的execute方法執(zhí)行SQL語(yǔ)句。代碼如下:</p><p> _ParameterPtr pUser,pPassword;</p><p> CServerApp *pAPP=(CServerApp*)AfxGetApp();</p><p> pUser=pAPP->m
107、_DataManage.m_pCommand->CreateParameter("user",adVarWChar,adParamInput,</p><p> 100,(_bstr_t)user);</p><p> pPassword=pAPP->m_DataManage.m_pCommand->CreateParameter("pa
108、ssword",adVarWChar,adParamInput,</p><p> 100,(_bstr_t)password);</p><p> pAPP->m_DataManage.m_pConnection->CursorLocation=adUseServer;</p><p> pAPP->m_DataManage.m_
109、pCommand->ActiveConnection=pAPP->m_DataManage.m_pConnection;</p><p> pAPP->m_DataManage.m_pCommand->Parameters->Append(pUser);</p><p> pAPP->m_DataManage.m_pCommand->Param
110、eters->Append(pPassword);</p><p> //CString sql="select *from tb_userInfo where UserName='"+user+"' and PassWord='"+password+"'";</p><p> pAPP-
111、>m_DataManage.m_pCommand->CommandText=</p><p> "select *from tb_userInfo where UserName=@user and PassWord=@password";//</p><p> _RecordsetPtr pRecord=NULL;</p><p>
112、; pRecord=pAPP->m_DataManage.m_pCommand->Execute(0,NULL,adCmdText);</p><p> pAPP->m_DataManage.m_pCommand->Parameters->Delete("user");</p><p> pAPP->m_DataManage.m
113、_pCommand->Parameters->Delete("password");</p><p> §5.3系統(tǒng)登錄模塊實(shí)現(xiàn)過(guò)程</p><p> 創(chuàng)建一個(gè)對(duì)話框,如下圖:</p><p> 修改對(duì)話框類的PreTranslateMessage虛方法,當(dāng)編輯框獲得焦點(diǎn)時(shí),按Enter鍵控制焦點(diǎn)移動(dòng)。</p&g
114、t;<p> BOOL CLoginDlg::PreTranslateMessage(MSG* pMsg) </p><p><b> {</b></p><p> if (pMsg->message==WM_KEYDOWN && pMsg->wParam==VK_RETURN )</p><p>
115、;<b> {</b></p><p> CString str;</p><p><b> //獲取類名</b></p><p> GetClassName(pMsg->hwnd,str.GetBuffer(0),MAX_PATH);</p><p> if (str=="
116、;Edit")</p><p> pMsg->wParam = VK_TAB ;</p><p><b> }</b></p><p> return CDialog::PreTranslateMessage(pMsg);</p><p><b> }</b></p&g
117、t;<p> 處理“登錄”按鈕的單擊事件,驗(yàn)證用戶名和密碼是否正確。如果用戶名和密碼正確,關(guān)閉對(duì)話框并返回IDOK。</p><p> void CLoginDlg::OnLogin() </p><p><b> {</b></p><p> // TODO: Add your control notification
118、handler code here</p><p> CString user,password;</p><p> m_Username.GetWindowText(user);</p><p> m_Password.GetWindowText(password);</p><p> if(user.IsEmpty()||pass
119、word.IsEmpty())</p><p><b> {</b></p><p> MessageBox("用戶或密碼不能為空!");</p><p> m_Username.SetFocus();</p><p><b> }</b></p><
120、p><b> else</b></p><p><b> {</b></p><p> _ParameterPtr pUser,pPassword;</p><p> CServerApp *pAPP=(CServerApp*)AfxGetApp();</p><p> pUser=
121、pAPP->m_DataManage.m_pCommand->CreateParameter("user",adVarWChar,adParamInput,</p><p> 100,(_bstr_t)user);</p><p> pPassword=pAPP->m_DataManage.m_pCommand->CreateParamete
122、r("password",adVarWChar,adParamInput,</p><p> 100,(_bstr_t)password);</p><p> pAPP->m_DataManage.m_pConnection->CursorLocation=adUseServer;</p><p> pAPP->m_Dat
123、aManage.m_pCommand->ActiveConnection=pAPP->m_DataManage.m_pConnection;</p><p> pAPP->m_DataManage.m_pCommand->Parameters->Append(pUser);</p><p> pAPP->m_DataManage.m_pCommand
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--局域網(wǎng)監(jiān)控系統(tǒng)
- 局域網(wǎng)監(jiān)控系統(tǒng)畢業(yè)設(shè)計(jì)
- 局域網(wǎng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 局域網(wǎng)畢業(yè)設(shè)計(jì)2
- 局域網(wǎng)畢業(yè)設(shè)計(jì)論文
- cisco局域網(wǎng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---無(wú)線局域網(wǎng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---企業(yè)局域網(wǎng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-小型網(wǎng)吧局域網(wǎng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---局域網(wǎng)規(guī)劃與設(shè)計(jì)
- 校園局域網(wǎng)規(guī)劃設(shè)計(jì)_畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---校園局域網(wǎng)的組建
- 校園局域網(wǎng)的組建畢業(yè)設(shè)計(jì)
- 局域網(wǎng)反監(jiān)控
- 畢業(yè)設(shè)計(jì)----公司局域網(wǎng)組建
- 畢業(yè)設(shè)計(jì)(論文)----企業(yè)局域網(wǎng)設(shè)計(jì)
- 企業(yè)局域網(wǎng)設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 畢業(yè)設(shè)計(jì)--局域網(wǎng)的設(shè)計(jì)與實(shí)現(xiàn)
- 企業(yè)局域網(wǎng)設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 局域網(wǎng)實(shí)時(shí)監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論