獨(dú)家原創(chuàng):網(wǎng)絡(luò)監(jiān)控系統(tǒng)研究論文

時間:2022-06-28 08:45:00

導(dǎo)語:獨(dú)家原創(chuàng):網(wǎng)絡(luò)監(jiān)控系統(tǒng)研究論文一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

獨(dú)家原創(chuàng):網(wǎng)絡(luò)監(jiān)控系統(tǒng)研究論文

[摘要]隨著信息時代的到來,特別是互聯(lián)網(wǎng)的迅速普及,人們開始越來越多地接觸到一個新概念--嵌入式產(chǎn)品。將嵌入式系統(tǒng)接入Internet。不僅實(shí)現(xiàn)了設(shè)備的遠(yuǎn)程控制、維護(hù)和升級,而且可實(shí)現(xiàn)資源共享。通過網(wǎng)絡(luò)對設(shè)備進(jìn)行監(jiān)控,一個外部界面是必不可少的,利用Web瀏覽器可使用戶通過網(wǎng)絡(luò)對遠(yuǎn)程系統(tǒng)實(shí)現(xiàn)管理和更新,大大簡化了人機(jī)界面的設(shè)計(jì)。若在系統(tǒng)中嵌入實(shí)時操作系統(tǒng),將使系統(tǒng)具有極強(qiáng)的可移植性,另外,硬件設(shè)備的添加與裁剪也具有極龐大的靈活性。采用DHCP協(xié)議動態(tài)獲得IP相關(guān)信息,使TCP/IP軟件不再依賴于存儲在芯片中的固定IP地址,這將為大型系統(tǒng)的安裝提供方便條件,熟悉C++或者JAVA。

[關(guān)鍵詞]網(wǎng)絡(luò)監(jiān)控系統(tǒng);Web服務(wù)數(shù)據(jù)庫;計(jì)算系統(tǒng)

“作為一名C++程序員,我們早已掌握了面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念,而且Java的語法無疑是非常熟悉的。事實(shí)上,Java本來就是從C++衍生出來的。”

一、C++和Java之間仍存在一些顯著的差異

可以這樣說,這些差異代表著技術(shù)的極大進(jìn)步。一旦我們弄清楚了這些差異,就會理解為什么說Java是一種優(yōu)秀的程序設(shè)計(jì)語言。本附錄將引導(dǎo)大家認(rèn)識用于區(qū)分Java和C++的一些重要特征。

(1)最大的障礙在于速度:解釋過的Java要比C的執(zhí)行速度慢上約20倍。無論什么都不能阻止Java語言進(jìn)行編譯。

(2)和C++一樣,Java也提供了兩種類型的注釋。

(3)所有東西都必須置入一個類。不存在全局函數(shù)或者全局?jǐn)?shù)據(jù)。

(4)所有方法都是在類的主體定義的。所以用C++的眼光看,似乎所有函數(shù)都已嵌入,但實(shí)情并非如何.

(5)在Java中,類定義采取幾乎和C++一樣的形式。

(6)Java中沒有作用域范圍運(yùn)算符“::”。

(7)與C++類似,Java含有一系列“主類型”(Primitivetype),以實(shí)現(xiàn)更有效率的訪問。

(8)char(字符)類型使用國際通用的16位Unicode字符集,所以能自動表達(dá)大多數(shù)國家的字符。

(9)靜態(tài)引用的字串會自動轉(zhuǎn)換成String對象。和C及C++不同,沒有獨(dú)立的靜態(tài)字符數(shù)組字串可供使用。

(10)Java增添了三個右移位運(yùn)算符“>>>”,具有與“邏輯”右移位運(yùn)算符類似的功用,可在最末尾插入零值。“>>”

(11)盡管表面上類似,但與C++相比,Java數(shù)組采用的是一個頗為不同的結(jié)構(gòu),并具有獨(dú)特的行為。

(12)對于所有不屬于主類型的對象,都只能通過new命令創(chuàng)建。

(13)Java中不必進(jìn)行提前聲明。若想在定義前使用一個類或方法,只需直接使用它即可——編譯器會保證使用恰當(dāng)?shù)亩x。

(14)Java沒有預(yù)處理機(jī)。若想使用另一個庫里的類,只需使用import命令,并指定庫名即可。。

(15)Java用包代替了命名空間。由于將所有東西都置入一個類,而且由于采用了一種名為“封裝”的機(jī)制,它能針對類名進(jìn)行類似于命名空間分解的操作,所以命名的問題不再進(jìn)入我們的考慮之列。

(16)被定義成類成員的對象句柄會自動初始化成null。對基本類數(shù)據(jù)成員的初始化在Java里得到了可靠的保障。

(17)在Java里,沒有象C和C++那樣的指針。用new創(chuàng)建一個對象的時候,會獲得一個引用(本書一直將其稱作“句柄”)。

(18)Java提供了與C++類似的“構(gòu)建器”(Constructor)。而如果定義了一個非默認(rèn)的構(gòu)建器,就不會為我們自動定義默認(rèn)構(gòu)建器。

(19)Java中沒有“破壞器”(Destructor)。變量不存在“作用域”的問題。一個對象的“存在時間”是由對象的存在時間決定的,并非由垃圾收集器決定。

(20)Java具有方法“過載”機(jī)制,它的工作原理與C++函數(shù)的過載幾乎是完全相同的。

(21)Java不支持默認(rèn)自變量。

(22)Java中沒有g(shù)oto。它采取的無條件跳轉(zhuǎn)機(jī)制是“break標(biāo)簽”或者“continue標(biāo)準(zhǔn)”,用于跳出當(dāng)前的多重嵌套循環(huán)。

(23)Java采用了一種單根式的分級結(jié)構(gòu),因此所有對象都是從根類Object統(tǒng)一繼承的。

(24)Java沒有模板或者參數(shù)化類型的其他形式。

(25)“垃圾收集”意味著在Java中出現(xiàn)內(nèi)存漏洞的情況會少得多,但也并非完全不可能(若調(diào)用一個用于分配存儲空間的固有方法,垃圾收集器就不能對其進(jìn)行跟蹤監(jiān)視)。

(26)Java內(nèi)建了對多線程的支持。利用一個特殊的Thread類,我們可通過繼承創(chuàng)建一個新線程(放棄了run()方法)。

(27)我們不是象C++那樣控制聲明代碼塊,而是將訪問限定符(public,private和protected)置入每個類成員的定義里。

(28)嵌套的類。在C++中,對類進(jìn)行嵌套有助于隱藏名稱,并便于代碼的組織(但C++的“命名空間”已使名稱的隱藏顯得多余)。Java的“封裝”或“打包”概念等價于C++的命名空間,所以不再是一個問題。

(29)由于存在前面介紹的那種內(nèi)部類,所以Java里沒有指向成員的指針。

(30)Java不存在“嵌入”(inline)方法。Java編譯器也許會自行決定嵌入一個方法,但我們對此沒有更多的控制權(quán)力。

(31)Java中的繼承具有與C++相同的效果,但采用的語法不同。

(32)Java中的繼承不會改變基礎(chǔ)類成員的保護(hù)級別。我們不能在Java中指定public,private或者protected繼承,這一點(diǎn)與C++是相同的。

(33)Java提供了一個interface關(guān)鍵字,它的作用是創(chuàng)建抽象基礎(chǔ)類的一個等價物。在其中填充抽象方法,且沒有數(shù)據(jù)成員。

(34)Java中沒有virtual關(guān)鍵字,因?yàn)樗蟹莝tatic方法都肯定會用到動態(tài)綁定。

(35)Java不提供多重繼承機(jī)制(MI),至少不象C++那樣做。

(36)運(yùn)行期的類型標(biāo)識功能與C++極為相似。

(37)Java采取了不同的異常控制機(jī)制,因?yàn)榇藭r已經(jīng)不存在構(gòu)建器。

(38)Java的異常規(guī)范比C++的出色得多。

(39)Java具有方法過載的能力,但不允許運(yùn)算符過載。

(40)通過事先的約定,C++中經(jīng)常出現(xiàn)的const問題在Java里已得到了控制。

(41)由于安全方面的原因,“應(yīng)用程序”的編程與“程序片”的編程之間存在著顯著的差異。

(42)由于Java在某些場合可能顯得限制太多,所以有時不愿用它執(zhí)行象直接訪問硬件這樣的重要任務(wù)。

(43)Java提供對注釋文檔的內(nèi)建支持,所以源碼文件也可以包含它們自己的文檔。

(44)Java包含了一些標(biāo)準(zhǔn)庫,用于完成特定的任務(wù)。C++則依靠一些非標(biāo)準(zhǔn)的、由其他廠商提供的庫。

(45)Java1.1包含了JavaBeans標(biāo)準(zhǔn),后者可創(chuàng)建在可視編程環(huán)境中使用的組件.

(46)若訪問Java句柄失敗,就會丟棄一次異常。

二、熟悉TCP/IP和Socket編程

Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。要學(xué)Internet上的TCP/IP網(wǎng)絡(luò)編程,必須理解Socket接口。

Socket接口設(shè)計(jì)者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Unix系統(tǒng)的輸入和輸出的話,就很容易了解Socket了。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似于打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實(shí)現(xiàn)的。常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對于面向連接的TCP服務(wù)應(yīng)用;數(shù)據(jù)報式Socket是一種無連接的Socket,對應(yīng)于無連接的UDP服務(wù)應(yīng)用。

三、Socket建立

為了建立Socket,程序可以調(diào)用Socket函數(shù),該函數(shù)返回一個類似于文件描述符的句柄。socket函數(shù)原型為:intsocket(intdomain,inttype,intprotocol);

domain指明所使用的協(xié)議族,通常為PF_INET,表示互聯(lián)網(wǎng)協(xié)議族(TCP/IP協(xié)議族);type參數(shù)指定socket的類型:SOCK_STREAM或SOCK_DGRAM,Socket接口還定義了原始Socket(SOCK_RAW),允許程序使用低層協(xié)議;protocol通常賦值"0"。Socket()調(diào)用返回一個整型socket描述符,你可以在后面的調(diào)用使用它。

Socket描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,它指向描述符表入口。調(diào)用Socket函數(shù)時,socket執(zhí)行體將建立一個Socket,實(shí)際上"建立一個Socket"意味著為一個Socket數(shù)據(jù)結(jié)構(gòu)分配存儲空間。Socket執(zhí)行體為你管理描述符表。

兩個網(wǎng)絡(luò)程序之間的一個網(wǎng)絡(luò)連接包括五種信息:通信協(xié)議、本地協(xié)議地址、本地主機(jī)端口、遠(yuǎn)端主機(jī)地址和遠(yuǎn)端協(xié)議端口。Socket數(shù)據(jù)結(jié)構(gòu)中包含這五種信息。

Socket配置

通過socket調(diào)用返回一個socket描述符后,在使用socket進(jìn)行網(wǎng)絡(luò)傳輸以前,必須配置該socket。面向連接的socket客戶端通過調(diào)用Connect函數(shù)在socket數(shù)據(jù)結(jié)構(gòu)中保存本地和遠(yuǎn)端信息。無連接socket的客戶端和服務(wù)端以及面向連接socket的服務(wù)端通過調(diào)用bind函數(shù)來配置本地信息。

Bind函數(shù)將socket與本機(jī)上的一個端口相關(guān)聯(lián),隨后你就可以在該端口監(jiān)聽服務(wù)請求。Bind函數(shù)原型為:

intbind(intsockfd,structsockaddr*my_addr,intaddrlen);

Sockfd是調(diào)用socket函數(shù)返回的socket描述符,my_addr是一個指向包含有本機(jī)IP地址及端口號等信息的sockaddr類型的指針;addrlen常被設(shè)置為sizeof(structsockaddr)。

熟悉Web服務(wù)編程思想和Web服務(wù)協(xié)議棧

[小結(jié)]Web是一個平臺;要讓它成長。當(dāng)然,我們還有很多其他的平臺(Windows、Linux、Mac),但是那些已經(jīng)不是重點(diǎn)了。換句話說,Web是無法脫離的平臺,不會中斷的平臺,你可以通過各種方式去擴(kuò)展的平臺。你在Web上提供的數(shù)據(jù)與服務(wù)將會成為Web一部分,最終你會在Web平臺的某一處扮演你的角色。扮演好你的角色并照顧好后來者。Web服務(wù)是獨(dú)立的模塊化應(yīng)用程序,能通過網(wǎng)絡(luò)描述、、定位和調(diào)用。

Web服務(wù)反映了一種新的面向服務(wù)的編程思想。這種思想基于發(fā)現(xiàn)并執(zhí)行網(wǎng)絡(luò)上可得到的服務(wù),或調(diào)用可利用的應(yīng)用程序完成一些任務(wù)來創(chuàng)建應(yīng)用程序的想法。Web服務(wù)的實(shí)現(xiàn)獨(dú)立于特定的編程語言或操作系統(tǒng),替代的是,Web服務(wù)的執(zhí)行依賴于已存在的傳輸技術(shù)(例如HTTP)和標(biāo)準(zhǔn)數(shù)據(jù)編碼技術(shù)(例如XML)。因?yàn)闃?gòu)建于這些標(biāo)準(zhǔn)之上,開發(fā)者們得以有機(jī)會基于功能來訪問于網(wǎng)絡(luò)中的應(yīng)用程序,而不是基于程序如何運(yùn)行,或程序如何編寫。

[參考文獻(xiàn)]

[1]BREWandJ2METM—ACompleteWirelessSolutionforOperatorsCommittedtoJava—Qualcomm/brew/images/about/pdf/brew_j2me.pdf

[2]DesignPatterns:ElementsofReusableObject-OrientedSoftware—ErichGamma,RichardHelm,RalphJohnson,andJohnVlissides,Addison-Wesley,1994

[3]StringinBREWRevisited—aBrewStringGeneralization—/ws/brew/article.php/2229051

[4]EmulatingC++ExceptionHandling—GregoryColvin,C/C++UsersJournal,December1994

[5]ForBrewDevelopers,ThereAreNewKidsinTown:IThread&IRscPool,Part2—/ws/brew/article.php/3105131