独家原创:网络监控系统研究论文

时间:2022-08-23 04:41:23

独家原创:网络监控系统研究论文

[摘要]随着信息时代的到来,特别是互联网的迅速普及,人们开始越来越多地接触到一个新概念--嵌入式产品。将嵌入式系统接入Internet。不仅实现了设备的远程控制、维护和升级,而且可实现资源共享。通过网络对设备进行监控,一个外部界面是必不可少的,利用Web浏览器可使用户通过网络对远程系统实现管理和更新,大大简化了人机界面的设计。若在系统中嵌入实时操作系统,将使系统具有极强的可移植性,另外,硬件设备的添加与裁剪也具有极庞大的灵活性。采用DHCP协议动态获得IP相关信息,使TCP/IP软件不再依赖于存储在芯片中的固定IP地址,这将为大型系统的安装提供方便条件,熟悉C++或者JAVA。

[关键词]网络监控系统;Web服务数据库;计算系统

“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”

一、C++和Java之间仍存在一些显著的差异

可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。

(1)最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行编译。

(2)和C++一样,Java也提供了两种类型的注释。

(3)所有东西都必须置入一个类。不存在全局函数或者全局数据。

(4)所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何.

(5)在Java中,类定义采取几乎和C++一样的形式。

(6)Java中没有作用域范围运算符“::”。

(7)与C++类似,Java含有一系列“主类型”(Primitivetype),以实现更有效率的访问。

(8)char(字符)类型使用国际通用的16位Unicode字符集,所以能自动表达大多数国家的字符。

(9)静态引用的字串会自动转换成String对象。和C及C++不同,没有独立的静态字符数组字串可供使用。

(10)Java增添了三个右移位运算符“>>>”,具有与“逻辑”右移位运算符类似的功用,可在最末尾插入零值。“>>”

(11)尽管表面上类似,但与C++相比,Java数组采用的是一个颇为不同的结构,并具有独特的行为。

(12)对于所有不属于主类型的对象,都只能通过new命令创建。

(13)Java中不必进行提前声明。若想在定义前使用一个类或方法,只需直接使用它即可——编译器会保证使用恰当的定义。

(14)Java没有预处理机。若想使用另一个库里的类,只需使用import命令,并指定库名即可。。

(15)Java用包代替了命名空间。由于将所有东西都置入一个类,而且由于采用了一种名为“封装”的机制,它能针对类名进行类似于命名空间分解的操作,所以命名的问题不再进入我们的考虑之列。

(16)被定义成类成员的对象句柄会自动初始化成null。对基本类数据成员的初始化在Java里得到了可靠的保障。

(17)在Java里,没有象C和C++那样的指针。用new创建一个对象的时候,会获得一个引用(本书一直将其称作“句柄”)。

(18)Java提供了与C++类似的“构建器”(Constructor)。而如果定义了一个非默认的构建器,就不会为我们自动定义默认构建器。

(19)Java中没有“破坏器”(Destructor)。变量不存在“作用域”的问题。一个对象的“存在时间”是由对象的存在时间决定的,并非由垃圾收集器决定。

(20)Java具有方法“过载”机制,它的工作原理与C++函数的过载几乎是完全相同的。

(21)Java不支持默认自变量。

(22)Java中没有goto。它采取的无条件跳转机制是“break标签”或者“continue标准”,用于跳出当前的多重嵌套循环。

(23)Java采用了一种单根式的分级结构,因此所有对象都是从根类Object统一继承的。

(24)Java没有模板或者参数化类型的其他形式。

(25)“垃圾收集”意味着在Java中出现内存漏洞的情况会少得多,但也并非完全不可能(若调用一个用于分配存储空间的固有方法,垃圾收集器就不能对其进行跟踪监视)。

(26)Java内建了对多线程的支持。利用一个特殊的Thread类,我们可通过继承创建一个新线程(放弃了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关键字,它的作用是创建抽象基础类的一个等价物。在其中填充抽象方法,且没有数据成员。

(34)Java中没有virtual关键字,因为所有非static方法都肯定会用到动态绑定。

(35)Java不提供多重继承机制(MI),至少不象C++那样做。

(36)运行期的类型标识功能与C++极为相似。

(37)Java采取了不同的异常控制机制,因为此时已经不存在构建器。

(38)Java的异常规范比C++的出色得多。

(39)Java具有方法过载的能力,但不允许运算符过载。

(40)通过事先的约定,C++中经常出现的const问题在Java里已得到了控制。

(41)由于安全方面的原因,“应用程序”的编程与“程序片”的编程之间存在着显著的差异。

(42)由于Java在某些场合可能显得限制太多,所以有时不愿用它执行象直接访问硬件这样的重要任务。

(43)Java提供对注释文档的内建支持,所以源码文件也可以包含它们自己的文档。

(44)Java包含了一些标准库,用于完成特定的任务。C++则依靠一些非标准的、由其他厂商提供的库。

(45)Java1.1包含了JavaBeans标准,后者可创建在可视编程环境中使用的组件.

(46)若访问Java句柄失败,就会丢弃一次异常。

二、熟悉TCP/IP和Socket编程

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。

Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。

三、Socket建立

为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:intsocket(intdomain,inttype,intprotocol);

domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type参数指定socket的类型:SOCK_STREAM或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值"0"。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。

Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上"建立一个Socket"意味着为一个Socket数据结构分配存储空间。Socket执行体为你管理描述符表。

两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。

Socket配置

通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。无连接socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。

Bind函数将socket与本机上的一个端口相关联,随后你就可以在该端口监听服务请求。Bind函数原型为:

intbind(intsockfd,structsockaddr*my_addr,intaddrlen);

Sockfd是调用socket函数返回的socket描述符,my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlen常被设置为sizeof(structsockaddr)。

熟悉Web服务编程思想和Web服务协议栈

[小结]Web是一个平台;要让它成长。当然,我们还有很多其他的平台(Windows、Linux、Mac),但是那些已经不是重点了。换句话说,Web是无法脱离的平台,不会中断的平台,你可以通过各种方式去扩展的平台。你在Web上提供的数据与服务将会成为Web一部分,最终你会在Web平台的某一处扮演你的角色。扮演好你的角色并照顾好后来者。Web服务是独立的模块化应用程序,能通过网络描述、、定位和调用。

Web服务反映了一种新的面向服务的编程思想。这种思想基于发现并执行网络上可得到的服务,或调用可利用的应用程序完成一些任务来创建应用程序的想法。Web服务的实现独立于特定的编程语言或操作系统,替代的是,Web服务的执行依赖于已存在的传输技术(例如HTTP)和标准数据编码技术(例如XML)。因为构建于这些标准之上,开发者们得以有机会基于功能来访问于网络中的应用程序,而不是基于程序如何运行,或程序如何编写。

[参考文献]

[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

上一篇:创建精神文明申报材料 下一篇:水库移民后期扶持管理论文