獨家原創(chuàng):網絡監(jiān)控系統(tǒng)研究論文
時間:2022-06-28 08:45:00
導語:獨家原創(chuàng):網絡監(jiān)控系統(tǒng)研究論文一文來源于網友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
[摘要]隨著信息時代的到來,特別是互聯(lián)網的迅速普及,人們開始越來越多地接觸到一個新概念--嵌入式產品。將嵌入式系統(tǒng)接入Internet。不僅實現(xiàn)了設備的遠程控制、維護和升級,而且可實現(xiàn)資源共享。通過網絡對設備進行監(jiān)控,一個外部界面是必不可少的,利用Web瀏覽器可使用戶通過網絡對遠程系統(tǒng)實現(xiàn)管理和更新,大大簡化了人機界面的設計。若在系統(tǒng)中嵌入實時操作系統(tǒng),將使系統(tǒng)具有極強的可移植性,另外,硬件設備的添加與裁剪也具有極龐大的靈活性。采用DHCP協(xié)議動態(tài)獲得IP相關信息,使TCP/IP軟件不再依賴于存儲在芯片中的固定IP地址,這將為大型系統(tǒng)的安裝提供方便條件,熟悉C++或者JAVA。
[關鍵詞]網絡監(jiān)控系統(tǒng);Web服務數(shù)據(jù)庫;計算系統(tǒng)
“作為一名C++程序員,我們早已掌握了面向對象程序設計的基本概念,而且Java的語法無疑是非常熟悉的。事實上,Java本來就是從C++衍生出來的?!?/p>
一、C++和Java之間仍存在一些顯著的差異
可以這樣說,這些差異代表著技術的極大進步。一旦我們弄清楚了這些差異,就會理解為什么說Java是一種優(yōu)秀的程序設計語言。本附錄將引導大家認識用于區(qū)分Java和C++的一些重要特征。
(1)最大的障礙在于速度:解釋過的Java要比C的執(zhí)行速度慢上約20倍。無論什么都不能阻止Java語言進行編譯。
(2)和C++一樣,Java也提供了兩種類型的注釋。
(3)所有東西都必須置入一個類。不存在全局函數(shù)或者全局數(shù)據(jù)。
(4)所有方法都是在類的主體定義的。所以用C++的眼光看,似乎所有函數(shù)都已嵌入,但實情并非如何.
(5)在Java中,類定義采取幾乎和C++一樣的形式。
(6)Java中沒有作用域范圍運算符“::”。
(7)與C++類似,Java含有一系列“主類型”(Primitivetype),以實現(xiàn)更有效率的訪問。
(8)char(字符)類型使用國際通用的16位Unicode字符集,所以能自動表達大多數(shù)國家的字符。
(9)靜態(tài)引用的字串會自動轉換成String對象。和C及C++不同,沒有獨立的靜態(tài)字符數(shù)組字串可供使用。
(10)Java增添了三個右移位運算符“>>>”,具有與“邏輯”右移位運算符類似的功用,可在最末尾插入零值?!?gt;>”
(11)盡管表面上類似,但與C++相比,Java數(shù)組采用的是一個頗為不同的結構,并具有獨特的行為。
(12)對于所有不屬于主類型的對象,都只能通過new命令創(chuàng)建。
(13)Java中不必進行提前聲明。若想在定義前使用一個類或方法,只需直接使用它即可——編譯器會保證使用恰當?shù)亩x。
(14)Java沒有預處理機。若想使用另一個庫里的類,只需使用import命令,并指定庫名即可。。
(15)Java用包代替了命名空間。由于將所有東西都置入一個類,而且由于采用了一種名為“封裝”的機制,它能針對類名進行類似于命名空間分解的操作,所以命名的問題不再進入我們的考慮之列。
(16)被定義成類成員的對象句柄會自動初始化成null。對基本類數(shù)據(jù)成員的初始化在Java里得到了可靠的保障。
(17)在Java里,沒有象C和C++那樣的指針。用new創(chuàng)建一個對象的時候,會獲得一個引用(本書一直將其稱作“句柄”)。
(18)Java提供了與C++類似的“構建器”(Constructor)。而如果定義了一個非默認的構建器,就不會為我們自動定義默認構建器。
(19)Java中沒有“破壞器”(Destructor)。變量不存在“作用域”的問題。一個對象的“存在時間”是由對象的存在時間決定的,并非由垃圾收集器決定。
(20)Java具有方法“過載”機制,它的工作原理與C++函數(shù)的過載幾乎是完全相同的。
(21)Java不支持默認自變量。
(22)Java中沒有goto。它采取的無條件跳轉機制是“break標簽”或者“continue標準”,用于跳出當前的多重嵌套循環(huán)。
(23)Java采用了一種單根式的分級結構,因此所有對象都是從根類Object統(tǒng)一繼承的。
(24)Java沒有模板或者參數(shù)化類型的其他形式。
(25)“垃圾收集”意味著在Java中出現(xiàn)內存漏洞的情況會少得多,但也并非完全不可能(若調用一個用于分配存儲空間的固有方法,垃圾收集器就不能對其進行跟蹤監(jiān)視)。
(26)Java內建了對多線程的支持。利用一個特殊的Thread類,我們可通過繼承創(chuàng)建一個新線程(放棄了run()方法)。
(27)我們不是象C++那樣控制聲明代碼塊,而是將訪問限定符(public,private和protected)置入每個類成員的定義里。
(28)嵌套的類。在C++中,對類進行嵌套有助于隱藏名稱,并便于代碼的組織(但C++的“命名空間”已使名稱的隱藏顯得多余)。Java的“封裝”或“打包”概念等價于C++的命名空間,所以不再是一個問題。
(29)由于存在前面介紹的那種內部類,所以Java里沒有指向成員的指針。
(30)Java不存在“嵌入”(inline)方法。Java編譯器也許會自行決定嵌入一個方法,但我們對此沒有更多的控制權力。
(31)Java中的繼承具有與C++相同的效果,但采用的語法不同。
(32)Java中的繼承不會改變基礎類成員的保護級別。我們不能在Java中指定public,private或者protected繼承,這一點與C++是相同的。
(33)Java提供了一個interface關鍵字,它的作用是創(chuàng)建抽象基礎類的一個等價物。在其中填充抽象方法,且沒有數(shù)據(jù)成員。
(34)Java中沒有virtual關鍵字,因為所有非static方法都肯定會用到動態(tài)綁定。
(35)Java不提供多重繼承機制(MI),至少不象C++那樣做。
(36)運行期的類型標識功能與C++極為相似。
(37)Java采取了不同的異??刂茩C制,因為此時已經不存在構建器。
(38)Java的異常規(guī)范比C++的出色得多。
(39)Java具有方法過載的能力,但不允許運算符過載。
(40)通過事先的約定,C++中經常出現(xiàn)的const問題在Java里已得到了控制。
(41)由于安全方面的原因,“應用程序”的編程與“程序片”的編程之間存在著顯著的差異。
(42)由于Java在某些場合可能顯得限制太多,所以有時不愿用它執(zhí)行象直接訪問硬件這樣的重要任務。
(43)Java提供對注釋文檔的內建支持,所以源碼文件也可以包含它們自己的文檔。
(44)Java包含了一些標準庫,用于完成特定的任務。C++則依靠一些非標準的、由其他廠商提供的庫。
(45)Java1.1包含了JavaBeans標準,后者可創(chuàng)建在可視編程環(huán)境中使用的組件.
(46)若訪問Java句柄失敗,就會丟棄一次異常。
二、熟悉TCP/IP和Socket編程
Socket接口是TCP/IP網絡的API,Socket接口定義了許多函數(shù)或例程,程序員可以用它們來開發(fā)TCP/IP網絡上的應用程序。要學Internet上的TCP/IP網絡編程,必須理解Socket接口。
Socket接口設計者最先是將接口放在Unix操作系統(tǒng)里面的。如果了解Unix系統(tǒng)的輸入和輸出的話,就很容易了解Socket了。網絡的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個類似于打開文件的函數(shù)調用Socket(),該函數(shù)返回一個整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實現(xiàn)的。常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對于面向連接的TCP服務應用;數(shù)據(jù)報式Socket是一種無連接的Socket,對應于無連接的UDP服務應用。
三、Socket建立
為了建立Socket,程序可以調用Socket函數(shù),該函數(shù)返回一個類似于文件描述符的句柄。socket函數(shù)原型為:intsocket(intdomain,inttype,intprotocol);
domain指明所使用的協(xié)議族,通常為PF_INET,表示互聯(lián)網協(xié)議族(TCP/IP協(xié)議族);type參數(shù)指定socket的類型:SOCK_STREAM或SOCK_DGRAM,Socket接口還定義了原始Socket(SOCK_RAW),允許程序使用低層協(xié)議;protocol通常賦值"0"。Socket()調用返回一個整型socket描述符,你可以在后面的調用使用它。
Socket描述符是一個指向內部數(shù)據(jù)結構的指針,它指向描述符表入口。調用Socket函數(shù)時,socket執(zhí)行體將建立一個Socket,實際上"建立一個Socket"意味著為一個Socket數(shù)據(jù)結構分配存儲空間。Socket執(zhí)行體為你管理描述符表。
兩個網絡程序之間的一個網絡連接包括五種信息:通信協(xié)議、本地協(xié)議地址、本地主機端口、遠端主機地址和遠端協(xié)議端口。Socket數(shù)據(jù)結構中包含這五種信息。
Socket配置
通過socket調用返回一個socket描述符后,在使用socket進行網絡傳輸以前,必須配置該socket。面向連接的socket客戶端通過調用Connect函數(shù)在socket數(shù)據(jù)結構中保存本地和遠端信息。無連接socket的客戶端和服務端以及面向連接socket的服務端通過調用bind函數(shù)來配置本地信息。
Bind函數(shù)將socket與本機上的一個端口相關聯(lián),隨后你就可以在該端口監(jiān)聽服務請求。Bind函數(shù)原型為:
intbind(intsockfd,structsockaddr*my_addr,intaddrlen);
Sockfd是調用socket函數(shù)返回的socket描述符,my_addr是一個指向包含有本機IP地址及端口號等信息的sockaddr類型的指針;addrlen常被設置為sizeof(structsockaddr)。
熟悉Web服務編程思想和Web服務協(xié)議棧
[小結]Web是一個平臺;要讓它成長。當然,我們還有很多其他的平臺(Windows、Linux、Mac),但是那些已經不是重點了。換句話說,Web是無法脫離的平臺,不會中斷的平臺,你可以通過各種方式去擴展的平臺。你在Web上提供的數(shù)據(jù)與服務將會成為Web一部分,最終你會在Web平臺的某一處扮演你的角色。扮演好你的角色并照顧好后來者。Web服務是獨立的模塊化應用程序,能通過網絡描述、、定位和調用。
Web服務反映了一種新的面向服務的編程思想。這種思想基于發(fā)現(xiàn)并執(zhí)行網絡上可得到的服務,或調用可利用的應用程序完成一些任務來創(chuàng)建應用程序的想法。Web服務的實現(xiàn)獨立于特定的編程語言或操作系統(tǒng),替代的是,Web服務的執(zhí)行依賴于已存在的傳輸技術(例如HTTP)和標準數(shù)據(jù)編碼技術(例如XML)。因為構建于這些標準之上,開發(fā)者們得以有機會基于功能來訪問于網絡中的應用程序,而不是基于程序如何運行,或程序如何編寫。
[參考文獻]
[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
- 上一篇:創(chuàng)建精神文明申報材料
- 下一篇:水庫移民后期扶持管理論文