2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  畢 業(yè) 設(shè) 計(jì)(論 文)</p><p>  設(shè)計(jì)(論文)題目:基于移動(dòng)設(shè)備的主機(jī)管理系統(tǒng)的設(shè)計(jì) </p><p>  學(xué) 院 名 稱: xxx </p><p>  專 業(yè): xxx </p><p>  班

2、 級(jí): xxx </p><p>  姓 名: xxx 學(xué) 號(hào) xxx </p><p>  指 導(dǎo) 教 師: xxx 職 稱 xxx </p><p>  企 業(yè) 教 師: xxx 企 業(yè)

3、 </p><p>  定稿日期: 2014 年 5 月 6 日</p><p>  基于移動(dòng)設(shè)備的主機(jī)管理系統(tǒng)的設(shè)計(jì)</p><p><b>  摘 要 </b></p><p>  本系統(tǒng)是一個(gè)基于ARM開(kāi)發(fā)板的移動(dòng)的服務(wù)器,支持有線模式或者WIFI模式進(jìn)行收發(fā)數(shù)據(jù)。用來(lái)接收PC機(jī)發(fā)來(lái)的相關(guān)運(yùn)行

4、信息,實(shí)現(xiàn)遠(yuǎn)程監(jiān)測(cè)控制主機(jī)的運(yùn)行狀態(tài)。在PC機(jī)上運(yùn)行一個(gè)客戶端,用于采集本PC機(jī)相關(guān)運(yùn)行數(shù)據(jù),如定期采集CPU的使用率,定期采集內(nèi)存的狀態(tài),采集磁盤信息,監(jiān)控當(dāng)前系統(tǒng)中運(yùn)行的進(jìn)程的狀態(tài),需要監(jiān)控的進(jìn)程的列表也是從配置文件中讀取,網(wǎng)絡(luò)流量監(jiān)控,采集時(shí)的重要數(shù)據(jù)記錄本地日志,提供用戶日后查看,然后發(fā)送給服務(wù)器,服務(wù)器會(huì)進(jìn)行數(shù)據(jù)分析,越高警戒值,會(huì)反饋給用戶,用戶可以通過(guò)服務(wù)器按鍵發(fā)送相關(guān)指令,控制PC機(jī)的運(yùn)行,比如關(guān)閉某個(gè)進(jìn)程,重啟PC機(jī),

5、關(guān)閉PC機(jī)等操作。</p><p>  關(guān)鍵詞:服務(wù)器,PC機(jī),移動(dòng)監(jiān)控</p><p>  MOBILE HOST EQUIPMENT MANAGEMENT</p><p>  SYSTEM BASED ON ARM BOARD</p><p><b>  ABSTRACT</b></p><p&g

6、t;  This system is a server based on the movement of the ARM development board, support model of cable or WIFI to send and receive data. To receives the PC of the relevant information, remote control of the host running

7、state. In PC running a client for this PC related operation data, such as regular collection CPU usage, regularly collecting memory state, disk information, monitoring the current system in the state of the running proce

8、ss, need to monitor the progress of the list is read from the co</p><p>  Key Words: servers, pc, mobile monitoring</p><p><b>  目錄</b></p><p><b>  摘 要I</b>&

9、lt;/p><p>  ABSTRACTII</p><p><b>  第1章緒論1</b></p><p><b>  1.1引言1</b></p><p>  1.2移動(dòng)主機(jī)管理系統(tǒng)設(shè)計(jì)的背景1</p><p>  1.3本設(shè)計(jì)所以實(shí)現(xiàn)的目標(biāo)2</p

10、><p>  1.4論文的結(jié)構(gòu)安排2</p><p>  第2章主機(jī)系統(tǒng)設(shè)計(jì)軟件壞境介紹3</p><p>  2.1Notepad++文本編輯器3</p><p>  2.2GCC編輯器4</p><p>  2.3GDB調(diào)試器4</p><p>  第3章主機(jī)管理系統(tǒng)整體設(shè)

11、計(jì)5</p><p>  3.1 整體設(shè)計(jì)概念設(shè)計(jì)圖5</p><p>  3.2 軟件工作流程圖5</p><p>  3.2.1 主機(jī)工作流程圖5</p><p>  3.2.2 監(jiān)控端工作流程圖7</p><p>  第4章主機(jī)管理系統(tǒng)模塊實(shí)現(xiàn)8</p><p>  4.1

12、日志記錄模塊實(shí)現(xiàn)8</p><p>  4.2配置文件模塊實(shí)現(xiàn)8</p><p>  4.3CPU使用率模塊實(shí)現(xiàn)8</p><p>  4.4內(nèi)存使用狀況模塊實(shí)現(xiàn)9</p><p>  4.5網(wǎng)絡(luò)流量監(jiān)控模塊實(shí)現(xiàn)9</p><p>  4.6進(jìn)程監(jiān)控模塊實(shí)現(xiàn)10</p><p&

13、gt;  4.7磁盤監(jiān)控模塊實(shí)現(xiàn)10</p><p>  4.8網(wǎng)絡(luò)通信模塊設(shè)計(jì)10</p><p>  4.8.1 TCP網(wǎng)絡(luò)協(xié)議的介紹10</p><p>  4.8.2 IP地址分類介紹13</p><p>  4.8.3 網(wǎng)絡(luò)連接過(guò)程實(shí)現(xiàn)13</p><p>  第5章主機(jī)管理系統(tǒng)的系統(tǒng)調(diào)試1

14、4</p><p>  5.1主機(jī)系統(tǒng)調(diào)試方法14</p><p>  5.2主機(jī)系統(tǒng)調(diào)試結(jié)果14</p><p>  5.3結(jié)果分析19</p><p>  第6章結(jié)論和展望20</p><p><b>  參考文獻(xiàn)21</b></p><p><

15、b>  附錄22</b></p><p>  作品使用說(shuō)明書40</p><p><b>  緒論</b></p><p><b>  引言</b></p><p>  隨著時(shí)代的不斷進(jìn)步,人們的生活水平也得到了質(zhì)的飛躍,計(jì)算機(jī)逐漸步入了每家每戶,成為了人們生活?yuàn)蕵?lè)工作必不可少

16、的伴侶。計(jì)算機(jī)的功能十分的強(qiáng)大,但是人們對(duì)于計(jì)算機(jī)的運(yùn)行狀況卻知之甚少,有的時(shí)候計(jì)算機(jī)的大腦CPU已經(jīng)嚴(yán)重超負(fù)荷,或者計(jì)算機(jī)的內(nèi)存已經(jīng)達(dá)到最大的承受極限了,然而人們并不知曉這些狀況,導(dǎo)致計(jì)算機(jī)最終超負(fù)荷運(yùn)行而損傷。計(jì)算機(jī)本身攜帶不方便,尤其是臺(tái)式計(jì)算機(jī)。人們要隨時(shí)隨地的掌握計(jì)算機(jī)的運(yùn)行狀況,就變得十分困難。所以如果有一款軟件,既能在本地主機(jī),根據(jù)用戶需求顯示出電腦運(yùn)行的關(guān)鍵信息,又可以在人們外出時(shí),通過(guò)遠(yuǎn)端實(shí)時(shí)監(jiān)控掌握家中電腦的運(yùn)行狀況

17、,那是十分方便和實(shí)用的。</p><p>  移動(dòng)主機(jī)管理系統(tǒng)設(shè)計(jì)的背景</p><p>  近幾年,隨著網(wǎng)絡(luò)帶寬和計(jì)算機(jī)處理能力以及存儲(chǔ)容量等性能的迅速提高,各種視頻音頻等信息處理技術(shù)的出現(xiàn),全程數(shù)字化網(wǎng)絡(luò)化的監(jiān)控系統(tǒng)技術(shù)的優(yōu)勢(shì)越來(lái)越明顯,漸漸的站到了主導(dǎo)的地位,它具有高開(kāi)放性,高集成性和良好的靈活性為監(jiān)控系統(tǒng)的整體性能提高創(chuàng)造了必要的條件。</p><p>  

18、隨著科學(xué)技術(shù)的迅速發(fā)展,人們的生活水準(zhǔn)和生活要求不斷提高,人們的生活用具也日益電子化,信息化。遠(yuǎn)程監(jiān)控技術(shù)的重要性也在人們的不斷發(fā)展中日益體現(xiàn)出來(lái),正在漸漸的應(yīng)用于生活和商業(yè)開(kāi)發(fā)的方方面面。監(jiān)控系統(tǒng)正從一個(gè)集中監(jiān)控向網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控進(jìn)行發(fā)展。在監(jiān)控系統(tǒng)剛剛產(chǎn)生的初期,大都是采用大型的儀表儀器對(duì)各種設(shè)備儀器的重要部分的狀態(tài)進(jìn)行監(jiān)控,并且是通過(guò)操作盤來(lái)進(jìn)行集中操作。發(fā)展至今,監(jiān)控技術(shù)變得越來(lái)越成熟,如今監(jiān)控主要以監(jiān)測(cè)控制的計(jì)算機(jī)為主體,與檢測(cè)裝

19、置被監(jiān)控的對(duì)象和執(zhí)行機(jī)構(gòu)共同構(gòu)成了一個(gè)大整體。</p><p>  監(jiān)控系統(tǒng)一般是以計(jì)算機(jī)網(wǎng)絡(luò)為載體,進(jìn)行數(shù)據(jù)的傳輸。然而現(xiàn)今的監(jiān)控技術(shù)還是主要應(yīng)用于局域區(qū)域內(nèi),他們的監(jiān)控范圍局限在同一個(gè)地點(diǎn),但是由于互聯(lián)網(wǎng)的存在,Internet能實(shí)現(xiàn)資源的共享,他可以幫助人們解決很多資源上的問(wèn)題,,他為遠(yuǎn)程管理系統(tǒng)的長(zhǎng)遠(yuǎn)發(fā)展提供了強(qiáng)大的后臺(tái)支持。監(jiān)控技術(shù)的重要性在社會(huì)的發(fā)展過(guò)程中日益重要,它有廣闊的發(fā)展前景和市場(chǎng)價(jià)值。<

20、;/p><p>  本設(shè)計(jì)所以實(shí)現(xiàn)的目標(biāo)</p><p>  本設(shè)計(jì)實(shí)現(xiàn)對(duì)電腦主機(jī)進(jìn)行遠(yuǎn)程監(jiān)控,以達(dá)到能實(shí)時(shí)掌握電腦此時(shí)此刻的詳細(xì)運(yùn)行狀況。萬(wàn)一出現(xiàn)一些未響應(yīng)或者溫度過(guò)高等緊急情況,我們可以進(jìn)行遠(yuǎn)程控制電腦的運(yùn)行狀態(tài),以緩解電腦的緊急的情況,達(dá)到保護(hù)電腦的目的。因此著力設(shè)計(jì)一個(gè)基于ARM開(kāi)發(fā)板的移動(dòng)的服務(wù)器(支持監(jiān)控多臺(tái)PC機(jī)),用來(lái)接收PC機(jī)發(fā)來(lái)的相關(guān)運(yùn)行信息,在PC機(jī)上運(yùn)行一個(gè)客戶端,用于

21、采集本PC機(jī)相關(guān)運(yùn)行數(shù)據(jù),(采集時(shí)的重要數(shù)據(jù)記錄本地日志,提供用戶日后查看)然后發(fā)送給服務(wù)器,服務(wù)器會(huì)進(jìn)行數(shù)據(jù)分析,越高警戒值,會(huì)反饋給用戶,用戶可以通過(guò)服務(wù)器發(fā)送相關(guān)指令,控制PC機(jī)的運(yùn)行,比如關(guān)閉某個(gè)進(jìn)程,重啟PC機(jī),關(guān)閉PC機(jī)等操作。</p><p><b>  論文的結(jié)構(gòu)安排</b></p><p>  本文一共分為六個(gè)章節(jié):</p><p

22、>  第一章緒論:簡(jiǎn)單介紹了課題的選題意義、研究現(xiàn)狀,論文主要工作和結(jié)構(gòu)安排。</p><p>  第二章系統(tǒng)設(shè)計(jì)的軟件環(huán)境介紹:介紹了本系統(tǒng)設(shè)計(jì)師主要用到的軟件環(huán)境。</p><p>  第三章系統(tǒng)的整體設(shè)計(jì):介紹了主機(jī)管理系統(tǒng)的整體設(shè)計(jì)框圖,以及系統(tǒng)的工作流程。</p><p>  第四章系統(tǒng)的模塊設(shè)計(jì):介紹了主機(jī)管理系統(tǒng)具體模塊的設(shè)計(jì)方法和實(shí)現(xiàn)過(guò)程。&l

23、t;/p><p>  第五章系統(tǒng)的調(diào)試:介紹了系統(tǒng)的調(diào)試流程和調(diào)試過(guò)程中出現(xiàn)的問(wèn)題,進(jìn)行了相應(yīng)的總結(jié),并提出了解決方法。</p><p>  第六章結(jié)論與展望:總結(jié)了本文的主要工作,并提出了以后有待進(jìn)一步研究。</p><p>  主機(jī)系統(tǒng)設(shè)計(jì)軟件壞境介紹</p><p>  Notepad++文本編輯器</p><p>

24、  Notepad++是一個(gè)很小的,靈活的純文本編輯器,十分好用。它的源代碼是開(kāi)源的,在文本編輯方面的功能可以與Windows的寫字板功能相當(dāng)。但是我比較看重的是它強(qiáng)大的代碼編寫的功能,在代碼編寫速度和準(zhǔn)確度上面,Notepad可謂是讓我如虎添翼。</p><p>  在代碼編輯方面,它自帶聯(lián)想功能,語(yǔ)法高亮,字詞自動(dòng)完成的功能,還支持同時(shí)編輯多重文檔。它支持許多語(yǔ)言,比如C,C++,shell腳本,python

25、等等語(yǔ)言,還自帶編譯的功能,當(dāng)然這個(gè)功能,我很少去用,因?yàn)橄旅娼榻B的GCC編譯器也是一個(gè)很強(qiáng)大的編譯神器。</p><p>  在代碼查看方面,它也足夠強(qiáng)大,基本能滿足我的需求。它能自動(dòng)檢測(cè)文件類型,根據(jù)關(guān)鍵字顯示節(jié)點(diǎn),并且能自由折疊打開(kāi),是代碼很具有層次感,看起來(lái)比較爽。在每行代碼的開(kāi)頭,都會(huì)有行標(biāo)號(hào),在軟件頂上會(huì)顯示當(dāng)前編輯的文件屬于哪個(gè)目錄,在查看源文件和頭文件路徑方面十分方便。在軟件左邊小窗口,會(huì)顯示出當(dāng)

26、前文件夾下的所有文件,軟件右邊的小窗口,會(huì)顯示源文件中包含的各個(gè)函數(shù),按照文件中函數(shù)實(shí)現(xiàn)的順序幫你依次排好,可以讓你最快速的定位到某一個(gè)函數(shù)。按CTR+F可以查詢當(dāng)前文件或者當(dāng)前打開(kāi)所有的文件你輸入關(guān)鍵字出現(xiàn)的具體位置,這個(gè)功能非常好用。還有一個(gè)很實(shí)用的功能,點(diǎn)住鼠標(biāo)右鍵選中一部分關(guān)鍵字,文本中與這個(gè)關(guān)鍵字相同的其他地方會(huì)被同時(shí)選中,對(duì)于查看某一個(gè)函數(shù)在哪些地方被調(diào)用了,這個(gè)方法是最快捷有效的。我利用這個(gè)神器寫代碼經(jīng)常用到的幾個(gè)功能就介

27、紹到這里,這個(gè)神器還有其他許許多多強(qiáng)大的功能,由于本次設(shè)計(jì)未曾用到,不做詳細(xì)介紹。</p><p><b>  GCC編輯器</b></p><p>  數(shù)來(lái)按規(guī)則編譯你的源代碼。gcc編譯器的最基礎(chǔ)的用法就是gcc加上源文件,如gcc xxx.c,他將會(huì)產(chǎn)生一個(gè)名稱為a.out的可執(zhí)行文件,如果你未曾設(shè)置過(guò)你的linux相關(guān)配置文件,直接./a.out就可以執(zhí)行這個(gè)

28、文件,你就會(huì)看到你設(shè)計(jì)的功能,前提是你寫的代碼準(zhǔn)確無(wú)誤,因?yàn)榧词股闪薬.out也不能保證能成功運(yùn)行,因?yàn)楸热缍五e(cuò)誤之類的在編譯階段是無(wú)法被發(fā)現(xiàn)的,在執(zhí)行的過(guò)程中才會(huì)體現(xiàn)出來(lái),在本次設(shè)計(jì)中,我一般是使用gdb調(diào)試工具來(lái)尋找的定位錯(cuò)誤的位置的,將在下文做介紹。</p><p>  如果你只想通過(guò)gcc檢查語(yǔ)法錯(cuò)誤,只編譯你的文件,并不想生成可執(zhí)行文件,你就可以使用gcc -c 這個(gè)選項(xiàng)來(lái)完成,在編寫makefile

29、的時(shí)候,對(duì)于多文件的編譯,經(jīng)常使用到這個(gè)參數(shù)。-o這個(gè)參數(shù)表示鏈接生成可執(zhí)行文件,而且可執(zhí)行文件名稱可以自己取跟在-o后面。-g這個(gè)參數(shù)在調(diào)試方面是比較重要的,如果想要利用gdb調(diào)試器對(duì)代碼進(jìn)行調(diào)試,就必須加上-g這個(gè)參數(shù)了。-Wall這個(gè)參數(shù)是為了顯示所有調(diào)試產(chǎn)生的警告,對(duì)于減少bug方面,這個(gè)參數(shù)也是至關(guān)重要的,其他還有一些參數(shù),在本設(shè)計(jì)中未曾用到,就不一一介紹了。</p><p><b>  GD

30、B調(diào)試器</b></p><p>  GDB調(diào)試器在本設(shè)計(jì)中,我只是利用它來(lái)尋找執(zhí)行產(chǎn)生的段錯(cuò)誤,其實(shí)他的功能遠(yuǎn)不止于此。在此我只介紹它定位段錯(cuò)誤的位置這個(gè)功能,其他功能在本次設(shè)計(jì)中g(shù)cc編譯器已經(jīng)為它代勞了,就不介紹了。如果執(zhí)行的時(shí)候發(fā)生了段錯(cuò)誤,你就可以gdb加上可執(zhí)行文件,進(jìn)入gdb調(diào)試。用list指令就可以列出你所調(diào)試的代碼,輸入run就可以開(kāi)始執(zhí)行你的程序,如果是沒(méi)有斷錯(cuò)誤的情況下,你可以設(shè)

31、置斷點(diǎn)來(lái)進(jìn)行調(diào)試,但是有斷錯(cuò)誤的情況下,就不必這么繁瑣了。直接run,它運(yùn)行到產(chǎn)生段錯(cuò)誤的地方他就會(huì)停下來(lái),它產(chǎn)生的調(diào)試信息,一般比較復(fù)雜,所以這時(shí)不必急著去研究,再輸入where指令,它就會(huì)告訴你在哪個(gè)函數(shù),哪行產(chǎn)生了段錯(cuò)誤,但是有的時(shí)候它給出的行數(shù)是一個(gè)十六進(jìn)制的內(nèi)存地址,一般是無(wú)法確定行數(shù)的,這時(shí)就可以輸入list指令直接列出產(chǎn)生段錯(cuò)誤的詳細(xì)代碼段。然后就可以直接去源文件的具體位置查看代碼出了什么問(wèn)題。</p>&l

32、t;p>  主機(jī)管理系統(tǒng)整體設(shè)計(jì)</p><p>  3.1 整體設(shè)計(jì)概念設(shè)計(jì)圖</p><p>  圖3-1 整體系統(tǒng)設(shè)計(jì)概念圖</p><p>  如上圖3-1所示,移動(dòng)監(jiān)控設(shè)備實(shí)時(shí)通過(guò)網(wǎng)絡(luò)跟個(gè)人PC進(jìn)行通信,pc主機(jī)采集各種運(yùn)行狀態(tài)的詳細(xì)信息,發(fā)送到移動(dòng)監(jiān)控端。移動(dòng)監(jiān)控端通過(guò)網(wǎng)絡(luò)接收到詳細(xì)信息打印到屏幕上,并且通過(guò)網(wǎng)絡(luò)發(fā)送指令到個(gè)人PC機(jī),控制PC機(jī)的運(yùn)

33、行。</p><p>  3.2 軟件工作流程圖</p><p>  3.2.1 主機(jī)工作流程圖</p><p>  如下圖3-2所示,軟件開(kāi)始運(yùn)行,首先初始化控制臺(tái),然后創(chuàng)建線程接受指令,調(diào)用recv函數(shù)接收。將接收到的數(shù)據(jù)進(jìn)行判斷,調(diào)用system函數(shù)進(jìn)行指令的執(zhí)行,并且記錄相關(guān)信息到日志文件。</p><p>  圖 3-2 主機(jī)工作流

34、程圖</p><p>  在主線程中,先判斷控制臺(tái)初始化的是否成功,如果成功初始化,就進(jìn)入相關(guān)工作,否則結(jié)束工作,記錄錯(cuò)誤信息。進(jìn)入正常流程后,先獲取當(dāng)?shù)貙?shí)時(shí)時(shí)間和本地主機(jī)ip,顯示在屏幕上,供用戶第一時(shí)間可看到。然后依次采集CPU使用率,實(shí)時(shí)網(wǎng)絡(luò)流量狀況,進(jìn)程運(yùn)行狀況,內(nèi)存使用狀況,以及磁盤使用狀況,采集完成一項(xiàng)就及時(shí)上傳,記錄成功上傳的記錄,失敗的話就記錄錯(cuò)誤日志。最后等待一定時(shí)間,進(jìn)行第二次采集上報(bào),實(shí)現(xiàn)實(shí)

35、時(shí)監(jiān)控的目標(biāo)。</p><p>  3.2.2 監(jiān)控端工作流程圖</p><p>  圖3-3 監(jiān)控端工作流程</p><p>  如上圖3-3所示,軟件啟動(dòng)首先進(jìn)入控制臺(tái)的初始化,開(kāi)辟一個(gè)線程,用于等待用戶輸入指令去控制主機(jī)的運(yùn)行。一旦用戶輸入指令,就會(huì)發(fā)送或者失敗的情況都會(huì)記錄相關(guān)情況。主線程顯示相關(guān)時(shí)間和IP信息,然后主動(dòng)connect主機(jī),連接成功后會(huì)等待接

36、收數(shù)據(jù),一旦數(shù)據(jù)到達(dá),就會(huì)實(shí)時(shí)分塊的顯示在屏幕上,以供用戶第一時(shí)間可以看到自己主機(jī)的運(yùn)行狀況,第一時(shí)間做出判斷控制。</p><p>  主機(jī)管理系統(tǒng)模塊實(shí)現(xiàn)</p><p><b>  日志記錄模塊實(shí)現(xiàn)</b></p><p>  錯(cuò)誤日志模塊設(shè)計(jì)的目的是可以快速的了解到系統(tǒng)運(yùn)行所產(chǎn)生的錯(cuò)誤信息,準(zhǔn)確的判斷系統(tǒng)設(shè)計(jì)的漏洞和系統(tǒng)崩潰的原因。其次

37、可以準(zhǔn)確的掌握系統(tǒng)指令的執(zhí)行狀況和運(yùn)行狀況。最重要的一個(gè)功能就是采集的信息有一塊出現(xiàn)了錯(cuò)誤,這時(shí)就可以通過(guò)日志,準(zhǔn)確定位到錯(cuò)誤原因產(chǎn)生的地方。</p><p>  日志文件的指定格式:[時(shí)間][模塊名稱][信息][級(jí)別]。</p><p>  級(jí)別:DEBUG 調(diào)試級(jí) NORMAL 普通級(jí) WARN 警告級(jí) ERROR 錯(cuò)誤級(jí)。</p><p><b&

38、gt;  配置文件模塊實(shí)現(xiàn)</b></p><p>  配置文件是本系統(tǒng)運(yùn)行的核心部分,系統(tǒng)要采集的關(guān)鍵信息都是從配置文件中讀取的。配置文件包含的內(nèi)容包含目標(biāo)主機(jī)的ip,端口,待監(jiān)控磁盤的名稱,待監(jiān)控進(jìn)程的名稱,采集時(shí)間間隔等,配置文件中每個(gè)名稱之間用逗號(hào)隔開(kāi),并且遵循一定格式。系統(tǒng)一開(kāi)始運(yùn)行,第一件要做的事就是初始化配置文件,把配置文件的內(nèi)容讀取到鏈表中,保存在內(nèi)存中,直到整個(gè)系統(tǒng)退出。</p

39、><p>  CPU使用率模塊實(shí)現(xiàn)</p><p>  linux操作系統(tǒng)CPU的使用狀況需要從/proc/cpuinfo文件中讀取,然后進(jìn)行分析計(jì)算。CPU的占用狀態(tài)分為用戶狀態(tài),系統(tǒng)狀態(tài)和空閑狀態(tài)。我們也可以用top指令查詢cpu使用的詳細(xì)狀況。在/proc/cpuinfo文件中,user time代表用戶時(shí)間,system time代表系統(tǒng)時(shí)間,waiting time代表等待時(shí)間,id

40、le time代表空閑時(shí)間,nice time代表nice時(shí)間,也就是說(shuō)是系統(tǒng)調(diào)整進(jìn)程優(yōu)先級(jí)所花費(fèi)的時(shí)間。hard irq time 代表硬中斷處理時(shí)間,softirq time代表軟中斷處理時(shí)間,stream time代表丟失時(shí)間。</p><p>  CPU占用率計(jì)算公式:</p><p>  CPU占用時(shí)間=user time+system time+waiting time+idl

41、e time+nice time+ hard irq time+softirq time+stream time。</p><p>  %user time=(user time + nice time)/CPU占用時(shí)間*100%。</p><p>  % system time=( system time + hardirq time +softirq time) /CPU占用時(shí)間*10

42、0%。</p><p>  % idle time=( idle time) /CPU占用時(shí)間*100%。</p><p>  % nice time=( nice time) /CPU占用時(shí)間*100%。</p><p>  % hard irq time=( hard irq time) /CPU占用時(shí)間*100%。</p><p>  

43、% waiting time=( waiting time) /CPU占用時(shí)間*100%。</p><p>  % softirq time=( softirq time) /CPU占用時(shí)間*100%。</p><p>  % stream time=( stream time) /CPU占用時(shí)間*100%。</p><p>  內(nèi)存使用狀況模塊實(shí)現(xiàn)</p&g

44、t;<p>  內(nèi)存是用來(lái)存儲(chǔ)數(shù)據(jù)的,是一種利用半導(dǎo)體技術(shù)做成的電子設(shè)備,電子電路的數(shù)據(jù)是以二進(jìn)制的方式存儲(chǔ),存儲(chǔ)器的每一個(gè)存儲(chǔ)單元稱做記憶元。存儲(chǔ)器的種類很多,按其用途可分為主存儲(chǔ)器和輔助存儲(chǔ)器,主存儲(chǔ)器又稱內(nèi)存。</p><p>  linux操作系統(tǒng)的內(nèi)存使用狀況可以通過(guò)/proc/meminfo文件中讀取。這個(gè)文件中涉及到三個(gè)主要的標(biāo)志。totalmem代表當(dāng)前總內(nèi)存,freemem代表當(dāng)前

45、空閑內(nèi)存,totalswap代表當(dāng)前可用的交換內(nèi)存,freeswap代表當(dāng)前可交換的空閑內(nèi)存。讀出來(lái)的內(nèi)存數(shù)據(jù)一般是以K為單位的,所以要把它換算成兆。換算的公式是1M=1024KB。</p><p>  網(wǎng)絡(luò)流量監(jiān)控模塊實(shí)現(xiàn)</p><p>  本模塊主要監(jiān)測(cè)當(dāng)前主機(jī)的平均上傳流量的速度和下載速度。網(wǎng)絡(luò)流量可以在/proc/net/dev文件獲取當(dāng)前的總值。我采取分別隔相等的秒數(shù)讀取三次流

46、量上傳速度和下載速度并把他們保存在緩存中,最終取三次數(shù)值的平均值,計(jì)算出平均的上傳速度和下載速度。</p><p><b>  進(jìn)程監(jiān)控模塊實(shí)現(xiàn)</b></p><p>  需要監(jiān)控的關(guān)鍵進(jìn)程是事先寫入到配置文件中的,我們可以從配置文件中讀取待監(jiān)控的關(guān)鍵進(jìn)程,分析出他的關(guān)鍵狀態(tài)。如果不采用寫入配置文件的方式進(jìn)行監(jiān)控進(jìn)程,那系統(tǒng)運(yùn)行的進(jìn)程非常多,采集出來(lái)的數(shù)據(jù)量極大,而

47、且數(shù)度復(fù)雜度很高,針對(duì)性很差,難以起到及時(shí)發(fā)現(xiàn)不正常進(jìn)程的效果。</p><p>  linux操作系統(tǒng)可以通過(guò)ps -ef進(jìn)行對(duì)當(dāng)前系統(tǒng)的所有進(jìn)程進(jìn)行查詢。我通過(guò)函數(shù)popen打開(kāi)ps -ef這個(gè)指令,然后根據(jù)配置文件所要求的進(jìn)程進(jìn)行逐個(gè)對(duì)比,符合要求的進(jìn)程,當(dāng)即提取出相關(guān)信息,保存到緩存中,再繼續(xù)對(duì)比讀取,直到配置文件中所有待監(jiān)控進(jìn)程全部尋找完畢。如果待監(jiān)控進(jìn)程不存在于當(dāng)前系統(tǒng),則將他的進(jìn)程ID設(shè)置成-1以做

48、區(qū)別。</p><p><b>  磁盤監(jiān)控模塊實(shí)現(xiàn)</b></p><p>  待檢測(cè)的磁盤名是從配置文件中讀取的,因?yàn)槲覀兊膒c機(jī)可以掛載多個(gè)外接磁盤,全部讀取,針對(duì)性差,與本設(shè)計(jì)初衷不符。linux操作系統(tǒng)的所有磁盤的信息是在/etc/mtab中讀取。我將磁盤的狀態(tài)分成未掛載(0),正常(1),故障(5)。磁盤要采集的信息包括磁盤當(dāng)前的狀態(tài),磁盤的掛載路徑,磁盤

49、的類型,磁盤的塊大小,磁盤的總大小,磁盤的空閑大小等。這些信息采集出來(lái)可以在本地pc機(jī)上通過(guò)指令查看,同時(shí)也會(huì)發(fā)送給遠(yuǎn)端監(jiān)控端。</p><p><b>  網(wǎng)絡(luò)通信模塊設(shè)計(jì)</b></p><p>  TCP網(wǎng)絡(luò)協(xié)議的介紹</p><p>  本設(shè)計(jì)網(wǎng)絡(luò)通信主要是基于TCP網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)的,首先詳細(xì)介紹下TCP網(wǎng)絡(luò)協(xié)議。TCP是一種面向連接的,

50、可靠的,基于字節(jié)流的傳輸層的通信協(xié)議。TCP/ip協(xié)議遵循四層的一個(gè)模型,分別是應(yīng)用層,傳輸層,互聯(lián)層,網(wǎng)絡(luò)接口層。與之對(duì)應(yīng)的是OSI模型,它的物理層,表示層,會(huì)話層其實(shí)是對(duì)應(yīng)于四層模型的應(yīng)用層。OSI的傳輸層對(duì)應(yīng)于四層模型的TCP/UDP層,OSI的網(wǎng)絡(luò)層對(duì)應(yīng)于四層模型的IPV4,IPV6地址,OSI的數(shù)據(jù)鏈路層和物理層其實(shí)就是對(duì)應(yīng)與四層模型的網(wǎng)絡(luò)介質(zhì)層。下圖4-1是這兩個(gè)模型的圖形表示,看起來(lái)會(huì)比較直觀。</p>&l

51、t;p><b>  圖4-1模型對(duì)比</b></p><p>  TCP協(xié)議數(shù)據(jù)進(jìn)入?yún)f(xié)議棧時(shí)的封裝如下圖4-2所示:</p><p>  圖4-2 TCP協(xié)議入棧數(shù)據(jù)封裝</p><p>  下圖是TCP協(xié)議建立對(duì)話連接的示意圖:</p><p>  圖4-3 TCP對(duì)話連接建立</p><p&

52、gt;  下圖是TCP協(xié)議斷開(kāi)對(duì)話連接的示意圖:</p><p>  圖4-4 TCP連接斷開(kāi)</p><p><b>  IP地址分類介紹</b></p><p>  其次本設(shè)計(jì)采用的目標(biāo)連接是基于IPV4類型的IP地址的,IP地址分為IPV4和IPV6兩種類型,目前廣泛采用的是IPV4地址,目前的主流IP地址基本都是采用IPV4的,但是IP

53、V4地址的數(shù)量有限,隨著電腦的不斷普及和網(wǎng)絡(luò)的擴(kuò)張,下面詳細(xì)介紹IPV4地址族的分類和子網(wǎng)劃分。</p><p>  A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”, 地址范圍1.0.0.1-126.255.255.254。可用的A類網(wǎng)絡(luò)有126個(gè),每個(gè)網(wǎng)絡(luò)能容納1677214個(gè)主機(jī)。 </p><p>  B類IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的

54、主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍128.1.0.1-191.255.255.254。可用的B類網(wǎng)絡(luò)有16384個(gè),每個(gè)網(wǎng)絡(luò)能容納65534主機(jī) 。</p><p>  C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍192.0.1.1-223.255.255.254。C類網(wǎng)絡(luò)可達(dá)2097152個(gè),每個(gè)網(wǎng)絡(luò)能容納254個(gè)主機(jī)。</p>

55、<p>  D類IP地址第一個(gè)字節(jié)以“1110”開(kāi)始,它是一個(gè)專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點(diǎn)廣播(Multicast)中。多點(diǎn)廣播地址用來(lái)一次尋址一組計(jì)算機(jī),它標(biāo)識(shí)共享同一協(xié)議的一組計(jì)算機(jī)。地址范圍224.0.0.1-239.255.255.254。</p><p>  E類IP地址第一個(gè)字節(jié)以“1111”開(kāi)始,為將來(lái)使用保留。E類地址保留,僅作實(shí)驗(yàn)和開(kāi)發(fā)用。全零(“0.

56、0.0.0”)地址指任意網(wǎng)絡(luò)。全“1”的IP(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址。</p><p><b>  網(wǎng)絡(luò)連接過(guò)程實(shí)現(xiàn)</b></p><p>  在監(jiān)控端,調(diào)用socket函數(shù)初始化一個(gè)套接字,調(diào)用connect函數(shù)進(jìn)行主動(dòng)連接,重復(fù)嘗試連接多次。在服務(wù)端,也是調(diào)用socket函數(shù)初始化一個(gè)套接字,調(diào)用bind函數(shù)綁定一個(gè)本地ip地址

57、,綁定成功后調(diào)用listen函數(shù)進(jìn)行連接監(jiān)聽(tīng)。監(jiān)聽(tīng)成功后,調(diào)停accept函數(shù)進(jìn)行連接等待,使用select設(shè)置等待超時(shí)時(shí)間。</p><p>  主機(jī)管理系統(tǒng)的系統(tǒng)調(diào)試</p><p><b>  主機(jī)系統(tǒng)調(diào)試方法</b></p><p>  開(kāi)啟PC端的采集發(fā)送程序,查看確認(rèn)待監(jiān)控的項(xiàng)目后,配置好網(wǎng)絡(luò)地址和端口后,啟動(dòng)等待監(jiān)控端的連接。注意

58、觀察監(jiān)控端的連接超時(shí)等待次數(shù)。發(fā)現(xiàn)多次重連以后依舊無(wú)法建立連接,采取了關(guān)閉軟件進(jìn)行網(wǎng)絡(luò)的調(diào)試,互相PING對(duì)方的IP地址,發(fā)現(xiàn)無(wú)法PING通,確認(rèn)為網(wǎng)絡(luò)設(shè)置出現(xiàn)問(wèn)題,重新配置了網(wǎng)關(guān)和IP地址以后成功解決了連接問(wèn)題。</p><p>  開(kāi)啟移動(dòng)端電源,運(yùn)行移動(dòng)端的監(jiān)控程序,配置好網(wǎng)絡(luò)地址和端口后,啟動(dòng)主動(dòng)連接。三路握手成功后,數(shù)據(jù)會(huì)陸續(xù)發(fā)送到移動(dòng)監(jiān)控端,注意觀察LCD液晶屏幕的數(shù)據(jù)顯示,仔細(xì)核實(shí)數(shù)據(jù),記錄丟包和漏

59、發(fā)的項(xiàng)目。斷開(kāi)連接,查看日志文件的重要信息和錯(cuò)誤日志,并作分析,進(jìn)行進(jìn)一步的改進(jìn)。調(diào)試發(fā)現(xiàn)在斷開(kāi)后有時(shí)會(huì)出現(xiàn)不穩(wěn)定現(xiàn)象,一端斷開(kāi)了以后,另一端會(huì)進(jìn)入非正常工作。后來(lái)添加了斷開(kāi)判斷機(jī)制,設(shè)置斷開(kāi)標(biāo)志位進(jìn)行判斷處理,成功解決了這個(gè)問(wèn)題。</p><p><b>  主機(jī)系統(tǒng)調(diào)試結(jié)果</b></p><p>  經(jīng)測(cè)試,數(shù)據(jù)收發(fā)基本正常,LCD屏幕顯示合理有序,基本在允許的

60、誤差之內(nèi)。具體數(shù)據(jù)如下圖所示:</p><p>  圖5-1 內(nèi)存狀況數(shù)據(jù)</p><p>  如上圖5-1所示,顯示的為當(dāng)前電腦的內(nèi)存使用狀況。數(shù)據(jù)表明剩余內(nèi)存比較少,說(shuō)明當(dāng)前電腦開(kāi)啟的應(yīng)用過(guò)多,消耗了大量?jī)?nèi)存,用戶應(yīng)該適當(dāng)?shù)年P(guān)閉一些不使用的應(yīng)用來(lái)釋放內(nèi)存,緩解電腦的內(nèi)存壓力,減少對(duì)電腦的損傷。</p><p>  圖5-2 進(jìn)程運(yùn)行狀況</p>&

61、lt;p>  如上圖5-2所示,顯示為當(dāng)前主要監(jiān)控的進(jìn)程的運(yùn)行狀況的數(shù)據(jù),上圖顯示進(jìn)程ID為-1的表明當(dāng)前監(jiān)控的進(jìn)程已經(jīng)退出或者意外關(guān)閉。</p><p>  5-3 CPU使?fàn)顩r</p><p>  如上圖5-3所示,顯示為當(dāng)前CPU的使用情況,當(dāng)前電腦CPU使用率為百分之三,屬于比較正常的情況,說(shuō)明當(dāng)前電腦運(yùn)行基本穩(wěn)定。</p><p>  圖 5-4 實(shí)

62、時(shí)流量速度狀況</p><p>  如上圖5-4所示,顯示為當(dāng)前電腦實(shí)時(shí)流量上傳和下載速度的使用狀況。上面數(shù)據(jù)表明當(dāng)前主機(jī)沒(méi)有從網(wǎng)絡(luò)上面下載數(shù)據(jù)包,以28KB每秒的速度再?gòu)木W(wǎng)絡(luò)上下載數(shù)據(jù)包,當(dāng)前網(wǎng)速偏慢或者表明下載的資源稀少,導(dǎo)致下載速度過(guò)慢。</p><p><b>  圖 5-5 指令</b></p><p>  如上圖5-5所示,clea

63、n表示清屏指令,show可以顯示相關(guān)信息, start表示開(kāi)始發(fā)送運(yùn)行狀況信息,ls代表打印所有命令, quit表示結(jié)束整個(gè)軟件運(yùn)行,change是改變配置文件信息。</p><p>  圖5-6 磁盤運(yùn)行狀況</p><p>  如上圖5-6所示,顯示為當(dāng)前電腦磁盤的使用狀況。上面數(shù)據(jù),顯示磁盤大小為0的,說(shuō)明待監(jiān)控的磁盤狀態(tài)不正確,可能是配置的時(shí)候磁盤名輸入錯(cuò)誤,導(dǎo)致無(wú)法正確讀取,或者

64、待檢測(cè)的磁盤已經(jīng)被拔出,處于為掛載狀態(tài)。</p><p>  圖5-7開(kāi)始連接主機(jī)</p><p>  如上圖5-7所示,顯示為當(dāng)前開(kāi)始TCP網(wǎng)絡(luò)連接時(shí)的狀況。上圖表明,當(dāng)前的網(wǎng)絡(luò)狀況是不通的,無(wú)法進(jìn)行網(wǎng)絡(luò)連接。</p><p><b>  結(jié)果分析</b></p><p>  本次設(shè)計(jì)經(jīng)過(guò)設(shè)計(jì),實(shí)現(xiàn),調(diào)試最終圓滿完成,

65、經(jīng)調(diào)試,采集出來(lái)的數(shù)據(jù)基本符合實(shí)際情況,連接發(fā)送情況基本正常。經(jīng)過(guò)多次運(yùn)行測(cè)試,基本每次都能穩(wěn)定運(yùn)行,網(wǎng)絡(luò)連接基本穩(wěn)定。但是設(shè)計(jì)和調(diào)試中也碰到了比較多的問(wèn)題,首先連接斷開(kāi)后,沒(méi)有很好的進(jìn)行斷開(kāi)處理,會(huì)產(chǎn)生大量錯(cuò)誤信息,后來(lái)經(jīng)多次實(shí)驗(yàn),加上斷開(kāi)連接判斷,很好地解決了這個(gè)問(wèn)題。有些數(shù)據(jù)量比較大,比如說(shuō)進(jìn)程相關(guān)數(shù)據(jù),磁盤相關(guān)數(shù)據(jù),會(huì)產(chǎn)生大量的數(shù)據(jù),在屏幕上一次性顯示有一定的困難,所以這兩塊數(shù)據(jù)的顯示不是很直觀。其他功能基本與設(shè)計(jì)目標(biāo)符合。&l

66、t;/p><p><b>  結(jié)論和展望</b></p><p>  本次畢業(yè)設(shè)計(jì)經(jīng)過(guò)調(diào)試,采集到的數(shù)據(jù)和效果,基本符合預(yù)先設(shè)計(jì)的需求,功能穩(wěn)定,使用也還直觀方便,具有一定的實(shí)際意義。由于本人掌握的知識(shí)有限,設(shè)計(jì)雖已完成,但其中有很多不足,為了完成這次設(shè)計(jì),在幾個(gè)月內(nèi),認(rèn)真收集有關(guān)資料并做相關(guān)的整理和閱讀,為這次的設(shè)計(jì)做好充分的準(zhǔn)備。經(jīng)過(guò)這次畢設(shè),我體會(huì)到了以下幾點(diǎn)心得,

67、1.不論做什么,都要做好充分準(zhǔn)備,不應(yīng)盲目隨意的為完成任務(wù)而完成而學(xué)習(xí)。2.通過(guò)學(xué)習(xí),使我對(duì)硬件設(shè)計(jì)和各模塊的功能有了更深的了解,同時(shí)提高了動(dòng)手能力。3.通過(guò)學(xué)習(xí),加強(qiáng)了我寫代碼的能力,培養(yǎng)了良好的編程習(xí)慣,擴(kuò)展了知識(shí)層面。在以后的學(xué)習(xí)生涯中,還需要不斷地努力和進(jìn)步,爭(zhēng)取達(dá)到新的高度。</p><p>  雖然已經(jīng)順利的實(shí)現(xiàn)了預(yù)計(jì)的功能,但是本次設(shè)計(jì)的移動(dòng)主機(jī)管理系統(tǒng)還有很大的提升空間,還能有更好的發(fā)展前景。本次

68、設(shè)計(jì)只是實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)的移動(dòng)監(jiān)控,一個(gè)移動(dòng)設(shè)備只是單一的監(jiān)控了一臺(tái)電腦,局限性比較大,將來(lái)可以進(jìn)行改進(jìn),實(shí)現(xiàn)一對(duì)多監(jiān)控,還可以實(shí)現(xiàn)任意選擇監(jiān)控任意一臺(tái)你想監(jiān)控的電腦,可以在一個(gè)區(qū)域內(nèi)實(shí)現(xiàn)電腦ip地址的廣播,只要你知道主機(jī)的用戶名和密碼,就可以實(shí)施對(duì)他的監(jiān)控,如果實(shí)現(xiàn)諸如此類的完善,那本設(shè)計(jì)的功能將會(huì)變得更加完善和強(qiáng)大,發(fā)展前景將會(huì)一片廣闊。 </p><p><b>  參考文獻(xiàn)</b>&

69、lt;/p><p>  蔚敏, 偉民. 數(shù)據(jù)結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,1992.</p><p>  邵平凡, 徐霖. 基于 Qt 的嵌入式 GUI 開(kāi)發(fā)的應(yīng)用研究[J]. 工業(yè)控制計(jì)算機(jī),2011, 24(10): 49-51.</p><p>  鳥哥, 許偉, 林彩娥. 鳥哥的 Linux 私房菜: 第二版. 基礎(chǔ)學(xué)習(xí)篇[M]. 北京:人民郵電出版社,2

70、007.</p><p>  芬納, 魯多夫, 楊繼張. UNIX 網(wǎng)絡(luò)編程: 套接口 API. 第 1 卷[M]. 北京:清華大學(xué)出版社有限公司,2006.</p><p>  Stevens W R. UNIX 環(huán)境高級(jí)編程: 英文版[M]. 北京:機(jī)械工業(yè)出版社,2002.</p><p>  宋海民. C 語(yǔ)言程序設(shè)計(jì)[J]. 科技信息,2010, 35(3

71、0): 19-19.</p><p>  林登.C 專家編程[M]. 北京:人民郵電出版社,2002.</p><p>  Schmidt D C. The ADAPTIVE Communication Environment: An object-oriented network programming toolkit for developing communication softw

72、are[J], Citeseer, 1993,14(11):18-24</p><p>  Raymond E S. The art of Unix programming[M]. New York:Addison-Wesley Professional, 2003.</p><p><b>  附錄</b></p><p><b>

73、  congif.h</b></p><p>  #ifndef CON_H</p><p>  #define CON_H</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #define LEN

74、 100 //配置文件路徑名長(zhǎng)度 </p><p>  #define FILENAME1 "/mnt/hgfs/share/webmaster/config.pro"//配置文件放置路徑及配置文件名</p><p>  typedef struct Config {</p><p>  int reportInt

75、erval; //上報(bào)時(shí)間間隔</p><p>  char serverIp[32]; //服務(wù)器ip地址</p><p>  int serverPort; //服務(wù)端口</p><p>  int listenPort; //監(jiān)聽(tīng)端口</p><p>  char logPath[128];

76、 //日志文件路徑</p><p>  char partitions[1024]; //監(jiān)視的磁盤名字</p><p>  char processes[1024]; //監(jiān)視的進(jìn)程名字</p><p><b>  }CFG;</b></p><p><b>  /*</b></p&g

77、t;<p><b>  *功能:讀配置文件</b></p><p>  *filename:配置文件的路徑及配置文件名稱</p><p>  *cfg:struct Config結(jié)構(gòu)體指針</p><p>  *返回:讀取成功返回CFG結(jié)構(gòu)體指針,失敗返回NULL</p><p><b>  */

78、</b></p><p>  extern CFG* Read_Congif(const char *filename,CFG *cfg);</p><p><b>  #endif</b></p><p><b>  socket.h</b></p><p>  #ifndef MY_

79、CSOCKET_H</p><p>  #define MY_CSOCKET_H</p><p>  #include <sys/types.h></p><p>  #include <netinet/in.h></p><p>  #include <arpa/inet.h></p>&l

80、t;p>  #include <sys/socket.h></p><p>  #include <sys/time.h></p><p>  #include <unistd.h></p><p>  #include <netdb.h></p><p>  #include <s

81、ys/un.h></p><p>  extern int myConnect(const char *address,int port);</p><p>  extern int myBind(int sock, const char *ip, int port);</p><p>  extern int setBlock(int sock, int b

82、lock);</p><p>  extern char *getHostByName(const char *host, char *ip);</p><p>  extern int timeRecv(int fd, char* buf, int size, int timeout);</p><p>  extern int timeConnect(const

83、 char *addr, int port, int timeout);</p><p>  extern int timeAccept(int sock, int timeout);</p><p>  extern int fmtSend(int sock, int maxLen, const char *fmt, ...);</p><p>  extern

84、int SetRecvTimeOut(int sock, int sec, int usec);</p><p><b>  #endif</b></p><p><b>  cpu.h</b></p><p>  #ifndef CPU_H</p><p>  #define CPU_H</

85、p><p>  #include<stdio.h></p><p>  #include<unistd.h></p><p><b>  /*</b></p><p>  *功能:獲取cpu使用率</p><p><b>  *參數(shù): 無(wú)</b></

86、p><p>  *返回:讀取成功成功返回當(dāng)前cpu使用率,失敗返回-1</p><p><b>  */</b></p><p>  extern int Cpu_Read_Stat ();</p><p><b>  #endif</b></p><p><b>  

87、mem.h</b></p><p>  #ifndef MEMFINISH_H</p><p>  #define MEMFINISH_H</p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  /****

88、******************************</p><p><b>  結(jié)構(gòu)體</b></p><p>  ***********************************/</p><p>  typedef struct MemInfo </p><p><b>  {</b&

89、gt;</p><p>  unsigned long long totalMem;</p><p>  unsigned long long freeMem;</p><p>  unsigned long long totalSwap;</p><p>  unsigned long long freeSwap;</p>&

90、lt;p><b>  }MEM;</b></p><p><b>  /*</b></p><p>  *功能:獲取內(nèi)存使用狀況</p><p>  *mem:內(nèi)存結(jié)構(gòu)體指針</p><p>  *返回:成功返回0,失敗返回-1</p><p><b>  *

91、/</b></p><p>  extern int GetMeminfo(MEM *mem); //獲取內(nèi)存信息</p><p><b>  #endif</b></p><p><b>  net.h</b></p><p>  #ifndef VVOIP_LOG_H</p&g

92、t;<p>  #define VVOIP_LOG_H</p><p>  #define LOG_FILE "log.txt"</p><p>  enum LOG_LEVEL {</p><p>  LOG_DEBUG,</p><p><b>  LOG_INFO,</b><

93、/p><p><b>  LOG_WARN,</b></p><p><b>  LOG_ERROR</b></p><p><b>  };</b></p><p><b>  /*</b></p><p><b>  *功

94、能:寫日志</b></p><p>  *參數(shù):日志信息,時(shí)間,模塊名稱,日志級(jí)別,日志內(nèi)容</p><p><b>  *</b></p><p>  *返回:成功返回0,失敗返回-1</p><p><b>  */</b></p><p>  extern

95、int Log(const char *modName, int level, const char *fmt, ...);</p><p><b>  #endif</b></p><p><b>  process.h</b></p><p>  #ifndef PROCESS_H</p><p&g

96、t;  #define PROCESS_H</p><p>  #include"list.h"</p><p>  struct process</p><p><b>  {</b></p><p>  char processname[50];</p><p><b

97、>  int PID;</b></p><p>  int count;</p><p>  int status;</p><p><b>  };</b></p><p>  typedef struct process item;</p><p>  int append

98、_list(LIST* attr,char *str);</p><p>  int GetProcesses(LIST *attr);</p><p>  int count_num(char *str,FILE* fp);</p><p>  item* append_struct(char *str,int PID,int num,int status);&

99、lt;/p><p>  int travl_list_process(LIST* attr);</p><p><b>  #endif</b></p><p>  partition.h</p><p>  #ifndef PARLIST_H</p><p>  #define PARLIST_H&

100、lt;/p><p>  #include<stdio.h></p><p>  #include<string.h></p><p>  #include<unistd.h></p><p>  #include<stdlib.h></p><p>  #include<

101、;ctype.h></p><p>  #include <sys/vfs.h></p><p>  #include"congif.h"</p><p>  #include"list.h"</p><p>  #include "log.h"</p>

102、<p>  typedef struct Partition {</p><p>  char partition[128]; //磁盤分區(qū)設(shè)備名</p><p>  char mountPort[128]; //磁盤分區(qū)掛載路徑</p><p>  char fstype[16]; //文件系統(tǒng)格式</p><p>  lon

103、g file_block;//文件總數(shù)</p><p>  unsigned long long totalSize; //總空間,單位M</p><p>  unsigned long long freeSize; //剩余空間,單位M</p><p>  int status; //狀態(tài),0表示正常,-1表示未掛載</p><p><

104、;b>  }PAR;</b></p><p>  typedef struct Partition item1;</p><p><b>  /*</b></p><p><b>  *功能:分割字符串</b></p><p>  *str:帶分割字符串指針</p>

105、<p>  *str1:保存分割后字符串的指針</p><p>  *返回:讀取成功返回0,失敗返回-1</p><p><b>  */</b></p><p>  int Par_Cmd(char *str,char *str1);</p><p><b>  /*</b></p

106、><p>  *功能:讀mtab文件</p><p>  *str,str1,str2,str3:保存讀出信息的指針</p><p>  *返回:成功返回0,失敗返回-1</p><p><b>  */</b></p><p>  int Read_Mtab(char* str,char* str1

107、,char* str2,char* str3);</p><p><b>  /*</b></p><p><b>  *功能:寫磁盤</b></p><p>  *mountport:掛載路徑</p><p>  *status:掛載狀態(tài)</p><p>  *返回:成功返

108、回0,失敗返回-1</p><p><b>  */</b></p><p>  int Write_Disk(char *mountPort,int *status);</p><p><b>  /*</b></p><p>  *功能:讀statfs結(jié)構(gòu)體</p><p&g

109、t;  *mountport:掛載路徑</p><p>  *files:文件數(shù)</p><p>  *totalsize:總空間大小</p><p>  *freesize:剩余空間大小</p><p>  *返回:成功返回0,失敗返回-1</p><p><b>  */</b></p&

110、gt;<p>  int Read_Statfs(char *mountPort,long *files,unsigned long long *totalsize,unsigned long long *freesize);</p><p>  int GetPartitions(LIST *head);</p><p><b>  #endif</b>

111、;</p><p><b>  net.h</b></p><p>  #ifndef NET_H_</p><p>  #define NET_H_</p><p>  #include <stdio.h></p><p>  #include <string.h><

112、;/p><p>  #include <stdlib.h></p><p>  #include<ctype.h></p><p>  #include<unistd.h></p><p>  struct NetInfo</p><p><b>  {</b>&l

113、t;/p><p>  unsigned long upSpeed;</p><p>  unsigned long downSpeed;</p><p><b>  };</b></p><p><b>  /*</b></p><p>  *功能:獲取網(wǎng)絡(luò)流量速度</p&

114、gt;<p>  *recv:保存接收速度的地址,</p><p>  *tran:保存上傳速度的地址</p><p>  *返回:成功返回0,失敗返回-1</p><p><b>  */</b></p><p>  extern int ReadNetSpeed(unsigned long *recv,

115、unsigned long *tran);</p><p><b>  /*</b></p><p>  *功能:獲取上傳和下載的速度</p><p>  *net: 流量信息結(jié)構(gòu)體指針</p><p>  *返回:讀取成功返回0,失敗返回-1</p><p><b>  */</

116、b></p><p>  extern int GetNetInfo(struct NetInfo *net);</p><p><b>  #endif</b></p><p><b>  client.h</b></p><p>  #ifndef CLIENT_H</p>

117、<p>  #define CLIENT_H</p><p>  #include <stdio.h></p><p>  #include"partition.h"</p><p>  #include"congif.h"</p><p>  #include"list

118、.h"</p><p>  #include"cpu.h"</p><p>  #include"mem.h"</p><p>  #include"net.h"</p><p>  #include"thread.h"</p><p

119、>  #include <time.h></p><p>  #include <pthread.h></p><p>  #include <unistd.h></p><p>  #include <ctype.h></p><p>  #include<error.h>&

120、lt;/p><p>  #define CMD_LEN 50 //控制臺(tái)命令長(zhǎng)度</p><p>  #define DES_LEN80//有關(guān)命令描述長(zhǎng)度</p><p>  #define CMD_NUM6//命令數(shù)目(根據(jù)自己的需要去更改個(gè)數(shù))</p><p>  #define PROMPT"

121、[my-control] #" //控制終端顯示符</p><p><b>  //命令結(jié)構(gòu)體</b></p><p>  typedef struct cmd_info</p><p><b>  {</b></p><p>  char cmdn[CMD_LEN + 1];

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論