通信网络论文(收集5篇)
时间:2024-09-15
时间:2024-09-15
1.1内部原因
1.1.1计算机网络系统的稳定因素
计算机已经深入到人们日常生活的方方面面,很难有人可以不接触到计算机而进行工作和生活,因此计算机网络系统的设计的稳定性是很关键的因素,计算机网络通信实际上需要面对许多安全上的隐患,在日常生活和工作中出现的如突然停电、失火或是病毒侵袭等情况,人们尚且可以处理和解决,但是计算机本身的安全问题是由于系统设计得不合理或是不规范所引起的,这就很难进行有效地解决,从而不可避免地带来了计算机网络通信的安全问题。
1.1.2计算机硬件的设计不合理性
计算机的硬件设备是一台计算机是否优秀的重要标准,计算机在硬件设计上如果操作不当,计算机就会在运行的过程中出现安全隐患。例如驱动设计不符合规范,那么计算机在操作的过程中就很容易出现信息和数据在传输的过程中被半路截获,信息和数据的外泄所造成的经济损失难以估计。另一方面如果是显卡出现问题,那么计算机在运行过程中就很容易出现蓝屏或者白屏的现象,进而被迫停止计算机运行,不但影响了正常的工作,还容易泄露信息,给人们生活和工作造成极大地不便。
1.1.3系统安全防范功能不强
计算机网络系统在设计之时,对其自身的安全方面往往考虑得很少,这样就造成了计算机在运行时很容易被人恶意侵袭,或者在访问系统的设计上过于简单,这样计算机的使用者的个人信息(账号和密码)就很容易被盗,不仅个人隐私无法保证,也会有财产的损失。
1.2外部原因
1.2.1突然间的断电或者线路失火
人们在日常使用计算机的时候,突然间的断电或是线路短路都会使人们措手不及,常常是计算机系统内的数据和信息还没来得及保存,这方面的情况无法避免。人们在日常是计算机的时候应该养成良好的办公习惯,数据或者信息有一点存一点,这样可以有备无患,即使出现意外情况也不会产生损失。
1.2.2黑客的攻击或威胁
计算机极大地方便了人们的生活,人们的见识和知识都得到了提升,但是很多问题也随之而来。其中黑客攻击是比较危险的,它会使人们的生活和工作无法正常继续。黑客的攻击可以深入到很多细微之处,可能是一封电子邮件、木马程序或是强行攻击计算机等方式,从而侵袭到计算机,导致整个计算机瘫痪,无法正常工作,内部信息和数据的泄露,造成的损失也无法避免。
1.2.3计算机网络病毒
计算机网络病毒是令人们谈虎色变的网络攻击方式,它对攻击目标没有明确性,但却像传染病似的在计算机网络系统中蔓延开来,只要上网的电脑都会遭到侵袭,无一幸免。计算机病毒具有传播范围广,速度快的特点,整个计算机网络可能在很短的时间内就感染上病毒,比较轻的情况下会使整个计算机网络的网速便面。严重的情况下可能整个计算机网络都无法正常工作,系统的数据和信息都会丢失,从而使公司或者个人都蒙受经济损失和精神上的伤害。
2计算机网络通信的安全防护措施
2.1做好计算机系统技术的稳定性和安全防护工作
在设计计算机网络系统的过程中,要全面的分析和考虑计算机网络系统的每一个环节和容易忽略的方面,要在任何一个可能被黑客或者病毒入侵的地方做好防御和拦截工作.在计算机硬件或者软件上安装病毒拦截或病毒截获系统,在病毒还没有入侵电脑系统的时候。在电脑就把病毒截获或者消灭。还可以在计算机的网络系统中设计一个垃圾文件或者不知名文件的处理系统,使这些文件在进入网络系统之前就被消灭和分解掉。
2.2做好对计算机有关联的外部环境的影响
计算机在工作的过程中很容易遭受外在环境的不良影响,计算机网络通信系统无法正常的工作,如突然断电、线路失火、打雷闪电而造成电脑磁场破坏等等,所以,要经常检测链接电脑的线路问题,看看那些线路有问题,及时的发现或者处理掉。做好电脑防御和避雷的工作,在计算机工作的地方安装避雷针或其他强制干扰电脑磁场的防御措施,使得电脑不容易受外在自然条件的影响或侵害。
2.3做好访问加密措施
实际上无论是黑客的攻击还是病毒的侵袭有些时候都是因为人们对文件的保密和数据的加密设置的过于简单而造成的,所以很容易给黑客、计算机网络病毒或者一些不法犯罪份子提供便利条件,直接造成了信息和数据的外泄和丢失。所以,做好文件的保密工作和数据的加密措施非常有必要。密码作为计算机网络的个人资料保护的基础防线,是值得注意的问题。而很多人对密码的重要性认识还不够。有些人为了方便省事直接把密码设置为一组简单的数字,比如12345。随着人们对黑客等网络安全的认识逐渐深入,有的网站已经要求人们使用字母、数字和下划线重新组织密码,但还是有人设置密码的时候过于简单,abc123这样的密码是时而常见的密码,这样就直接造成了密码盗号的情况。因此在设置密码的时候应该尽量复杂化,还可以不断更换密码,这样不会让黑客有可趁之机———破译密码,人们在使用计算机时,应该特别注意。
3结束语
【关键词】网络分层WinDis32技术网络信息截获数据帧NDIS网络适配器
1.前言
随着计算机网络技术的发展,各类网络规模的扩大,远程访问的增加,虚拟专用网(VPN)的出现和Internet的普及,网络安全性已成为计算机网络领域一门重要的研究学科。
网络监控是保障网络安全性的基本措施之一。网络监控,用于监测网上流动信息,并对网络信息给予适当控制。网络监控,可用于调试网络应用程序,判断应用程序是否正确地发送或接收了数据包。网络监控,还可用于监视网络信息,杜绝不健康站点的不健康内容,维护网络环境。应用于安全防范,可监视我方信息内容、保障网络安全,截获情报、分析怀有敌意方的网站。在计算机网络上实施有效的攻击与保护,是网络监控技术在军事上的重要发展方向之一。
本文论述的网络通信实时监测的实现,是用于特殊目的的数据通信程序设计的突破口,是网络监控技术的基础部分,其实现基于网络体系结构与WinDis32技术。
2.网络体系结构
现代计算机网络设计是按高度的结构化方式进行的,国际标准化组织(ISO)为更广泛的计算机互联制定了标准化的开放系统互联(OSI)网络体系结构,如图1所示。
OSI参考模型用结构描述方法,即分层描述的方法,将整个网络的通信功能划分为七个部分(也叫七个层次),每层各自完成一定的功能。由低层至高层分别称为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。两台网络主机之间进行通信时,发送方将数据从应用层向下传递到物理层,每一层协议模块为下一层进行数据封装,数据流经网络,到达接收方,接着再由下而上通过协议栈传递,并与接收方应用程序进行通信。
在整理网络中,数据链路层由网络适配器实现,本文中网络通信监测的立足点在于数据链路层,基于电缆是固有的广播性介质,通过对网络适配器的控制,实时截获与分析经过网络适配器的所有网上流动信息。
3.WinDis32技术
WinDis32全称为Win32NDIS(NetworkDriverInterfaceSpecification)网络驱动接口规范,用于开发Windows产品,可在Windows9X和WindowsNT上直接访问NDIS媒体访问控制(MAC)驱动接口。图2显示了Windows网络驱动组件与Win32NDIS结构组件:
图2.Windows网络驱动组件与Win32NDIS结构组件
WinDis32网络组件由四部分组成:NDIS适配器、PCANDIS5NDIS协议驱动、W32N50WinDis32APIDLL、WinDis32应用程序。WinDis32应用程序调用W32N50.DLL动态链接库提供的API应用程序接口,通过NDIS协议驱动模块,实现对NDIS适配器进行的存取操作。网络驱动接口规范NDIS的主要特征是所有适配器相关驱动均由NDIS接口打包,例如,最底层NDISNIC驱动不能对网卡直接执行I/O,它通过NDIS打包服务来访问硬件;高层WindowsNDIS网络组件使用NDIS打包界面与适配器相关驱动通信。只有NDIS协议驱动可以调用NDIS打包,访问NDIS适配器。
WinDis32应用程序接口函数包括:W32N_OpenAdapter(),打开一个已被命名的NDIS适配驱动器,若操作成功,则生成一个面向适配器对象的WinDis32适配器句柄,这一句柄被随后多个在该适配器上操作的W32N_XXX函数所用;W32N_CloseAdapter(),关闭已打开的适配器句柄;W32N_PacketRead(),数据帧读操作;W32N_PacketReadEx(),数据帧异步读操作;W32N_PacketSend(),发送数据帧操作;W32N_PacketSendEx()、W32N_MakeNdisRequest()等等。
WinDis32技术使得从Win32应用层进行NDIS请求如同在一个内核模式的驱动器内部进行请求一样简单,并支持多个网络适配器同时打开,完成各自的信息发送与接收。
4.网络信息监测的实现
网络信息监测程序分为信息截获与信息分析两大部分,其中信息截获程序流程如图3所示,采用多进程与多线程技术,完成数据的实时截获。
其中网络适配器列表通过读取系统注册表生成;网络适配器详细信息包括适配器型号、网络适配器物理地址、传输最大帧、传输速率以及机内标识符,通过函数W32N_MakeNdisRequest()获得。
协议过滤部分是包括PCAUSA端口的PCANDIS5协议驱动,BPF过滤器是由UNIX环境到Windows的模拟机制,为Win32应用程序提供了一种普通而又便利的机制,可过滤指定协议,由协议驱动执行,拒绝不想要的数据帧。支持协议包括:传输控制协议TCP、互连网协议IP、地址解析协议ARP、反向地址解析协议RARP、互连网控制报文协议ICMP、互连网组管理协议IGMP、NovellSPX/IPX协议IPX、用户数据报协议UDP、NetBEUI协议、AppleTalk协议。
信息分析部分利用已获知的媒体访问控制协议,提取出数据帧中的有效域值,如源主机物理地址、目的主机物理地址、帧长度等。并同时为每一被截获的数据包打上时标,注上序列号,为下一步数据重组提供可靠依据。
接收数据帧显示与信息统计结果范例如下:
包序列号:0000000032时间:0005860470msec长度:54/54
Ethernet目的:00.40.05.39.A2.B0源:00.00.B4.86.74.FA类型:0x0800
000000:00400539A2B00000:B48674FA08004500.@.9......t...E.
000010:0028260340002006:A3256464647A6464.(&.@...%dddzdd
000020:64650406008B0040:BF14006C24B95010de.....@...l$.P.
000030:223812EA0000:"8..............
包序列号:0000000033时间:0005860764msec长度:109/109
Ethernet目的:00.40.05.39.A2.B0源:00.00.B4.86.74.FA类型:0x0800
000000:00400539A2B00000:B48674FA08004500.@.9......t...E.
000010:005F270340002006:A1EE6464647A6464._''''.@....dddzdd
000020:64650406008B0040:BF14006C24B95018de.....@...l$.P.
000030:2238DEC600000000:0033FF534D421A00"8.......3.SMB..
000040:0000000000800000:0000000000000000................
000050:00000308252D0308:014C080108008010....%-...L......
000060:0000100000000000:0000000000................
包序列号:0000000034时间:0005860766msec长度:1514/1514
Ethernet目的:00.00.B4.86.74.FA源:00.40.05.39.A2.B0类型0x0800
000000:0000B48674FA0040:0539A2B008004500....t..@.9....E.
000010:05DC640B40008006:FF68646464656464..d.@....hdddedd
000020:647A008B0406006C:24B90040BF4B5010dz.....l$..@.KP.
000030:20B786DA00000000:10007E8B77DAD2D0.........~.w...
000040:D727599A8F18D377:15D56C860F2C623E
...
停止数据帧接收
应用统计:
已接收数据帧数目:34
已发送数据帧数目:0
5.进一步研究与发展
本文所研究的网络信息监测属于计算机网络系统安全对策研究的一部分,属于网络信息监测的基础性研究。以此研究成果为基础,可进行进一步的软件开发,从而实现网络通信状况实时监测、情报获取、网上各站点地址分析、站点类型分析,为计算机网络的安全维护提供监测手段,因此,具有特别的意义。
参考文献
1.PCAUSAWinDis32V5.0文档1998.3
2.刘锦德等计算机网络大全电子工业出版社1997.7
3.KrisJamsa等INTERNET编程电子工业出版社1996.5
4.DavidJ.KruglinskiVisualC++技术内幕清华大学出版社1996.5
5.廖湖声面向对象的Windows程序设计基础人民邮电出版社1996.2
6.张国峰C++语言及其程序设计教程电子工业出版社1992.12
7.汤子瀛等计算机操作系统西安电子科技大学出版社1998.4
8.刘彦明等实用网络编程技术西安电子科技大学出版社1998.4
1.1网络通信结构不合理网络通信自身结构的不合理是造成当前我国网络通信信息安全隐患的首要原因。互联网通信技术是以网间网技术为主要依托的,用户需要通过自身固定的IP协议或TCP协议在网上注册账号,从而在获得网络的远程授权后开展网络通信。由于网络结构是树状型,用户在使用网络通信功能时可能被黑客攻击从而通过树状连接网络窃取用户的通信信息。
1.2网络通信软件存在安全隐患由于客户在使用网络通信软件时需要通过下载补丁等方式让软件能够符合计算机终端操作系统的要求,而这些被广泛应用并下载的软件程序可能由于补丁程序等的引入而成为公开化的信息,这种公开化的软件信息一旦被不法分子利用则会给人们的网络通信带来严重影响,这种影响甚至会波及整个计算机网络系统,造成整个网络的通信安全隐患。
1.3人为的网络系统攻击在利益的驱使下,部分不法分子企图通过不合法的网络系统攻击方式对网络通信进行人为的攻击从而获取大量的网络资源。这些“黑客”的攻击不仅出现在商业管理终端等能够获取大量经济利益的领域,甚至还可能出现在个人的计算机中获取个体用户的信息,给用户的信息安全造成重大隐患。应该客观认识的是,我国网络通信在人们生活水平不断提升及通信方式变革的背景下发展速度一日千里,但是作为保障的信息安全维护工作却与网络通信的发展现状存在较大差距。再加上网络通信管理部门对于网络通信信息安全认识不足、网络通信管理制度不健全等问题也加剧了网络通信信息安全隐患,甚至给整个互联网通信系统带来安全隐患,给不法分子以利用的机会。正是基于当前我国网络通信中信息安全的严峻现状及在这一过程中所出现问题的原因,笔者认为,不断加强网络通信技术革新与网络通信制度建设,充分保障网络通信信息安全是时展的必然要求。
2保障网络通信信息安全的途径
2.1充分保障用户IP地址由于黑客对用户网络通信的侵入与攻击大都是以获取用户IP地址为目的的,因此,充分保障用户的IP地址安全是保护用户网络通信安全的重要途径。用户在使用互联网时也要特别注意对自身IP地址的保护,通过对网络交换机的严格控制,切断用户IP地址通过交换机信息树状网络结构传递被透露的路径;通过对路由器进行有效的隔离控制,经常关注路由器中的访问地址,对非法访问进行有效切断。
2.2完善信息传递与储存的秘密性信息传递与信息储存的两个过程是当前给网络通信信息安全造成隐患的两个主要途径,在网络信息的存储与传递过程中,黑客可能会对信息进行监听、盗用、恶意篡改、拦截等活动以达到其不可告人目的的需求。这就要求用户在使用网络通信技术时要对网络信息的传递与储存环节尽量进行加密处理,保证密码的多元化与复杂性能够有效甚至从根本上解决信息在传递与储存环节被黑客攻击利用的威胁。当前在网络通信过程中用户可以选择自身合适的加密方式对自身的信息进行加密处理,而网络维护工作者也要根据实际情况加强对信息的加密设置。
2.3完善用户身份验证对用户的身份进行有效的验证是保障网络通信信息安全的另一条重要途径。在进行网络通信之前对用户身份进行严格验证,确保是本人操作从而对用户的私人信息进行充分有效的保护。当前,用户的身份验证主要是通过用户名与密码的“一对一”配对实现的,只有二者配对成功才能获得通信权限,这种传统的验证方法能够满意一般的通信安全需求,但是在网络通信技术发展速度不断加快的背景下,传统的身份验证方法需要新的变化,诸如借助安全令牌、指纹检测、视网膜检测等具有较高安全性的方法进一步提升网络通信信息安全水平。此外,在保障网络通信信息安全的过程中还可以通过完善防火墙设置,增强对数据源及访问地址恶意更改的监测与控制,从源头上屏蔽来自外部网络对用户个人信息的窃取以及对计算机的攻击。加强对杀毒软件的学习与使用,定期对电脑进行安全监测,从而确保用户自身的信息安全。
3结语
1.1利用通信控制器实现变电站内网络通信
变电站综合自动化系统中网络通信结构对整个自动化系统的安全、快速、可靠性运行有着重要作用。网络通信不仅能够有效提升变电站的运行效率,而且也体现了一个变电站的自动化发展水平。利用通信控制器实现变电站内网络通信在变电站综合自动化系统中根据其逻辑结构可将其分为:过程层、间隔层、通信控制层和站控层四个层次;其中,通信控制层和站控层采用的是高度网络通信;过程层和间隔层之间的通信采用的是现场总线通信。基于该种通信方式在变电站应用过程中通信实时性强,并且建立通信系统成本较低,所以长期以来都深受变电站青睐,直至今天,仍旧有一些低压变电站和220KV以上的高压变电站在使用。当然,该种通信网络结构的通信方式缺点也是存在的。主要体现在:间隔层设备数量及种类多,通信控制器难以承载过多设备的控制任务,使得通信效率下降,相应地通信故障问题也较多。通信控制器出现故障会造成整个变电站的信息难以控制,导致整个变电站综合自动化系统功能性失稳,可靠性大打折扣。即使一些试图采用双通信控制器解决该问题,但收效甚微,难以从根本上解决此类问题。
1.2利用间隔层设备直接上网实现变电站内网络通信
利用间隔层直接上网实现变电站内网络通信是当前变电站综合自动化系统发展趋势。该种通信方式中变电站自动化系统从逻辑结构划分可分为:过程层、间隔层和站控层三个层次。由于该种通信方式没有通信控制层,所以也减少了通信过程中的通信冗余问题,相应地通信效率较高,通信故障率下降。在变电站内,对于没有网络接口的间隔层设备,如保护装置、智能电度表等,可采用现场总线的方式进行连接;然后通过嵌入式以太网接口的通信管理单元将其作为一个间隔层网络节点同以太网连接。该种通信结构通信故障率低,通信实时性强,在高压变电站中应用最为广泛。现阶段,随着直接上网装置的技术更新,间隔层设备直接上网将成为变电站内网络通信发展的主要方向。
2.变电站内网络通信传输协议选择
变电站内网络通信传输协议可供选择的主要有两种:即TCP传输协议和UDP传输协议;该两种传输协议都是OSI传输层协议,都是基于IP协议所开发。该两种传输协议是当前变电站或其他领域应用最为广泛的以太网传输协议。
2.1TCP协议
TCP协议主要为应用程序提供连接定向,保证网络可靠性性通信。在通信过程中,通信发起方需要同通信接受方建立通信连接。TCP从应用层接受数据,并按照特定格式将数据打包为数据包,同时将其中一个带序列号的报头加入数据包之后提交给IP,IP将数据包发送到主机。在IP发送数据包过程中,发送方的TCP会备份数据包,如果数据包在发送时接收方未接受成功,数据包将会重新被发送;不过需要提出的是,数据包在重发的过程中会加重发送主机和网络运行负担。通常而言,在计算机操作系统中TCP默认的重发次数为五次,默认等待ck起始时间为ls。TCP通信只支持单播模式,并且信息目标地址为一个,网络上除了目的地址外的其他节点都无法接收源节点所发送信息。虽然TCP网络通信支持变电站内数据可靠性传送,但是变电站内的网络通信中的绝大部分数据则不需要可靠性传送。比如全遥信、全遥测等,都是通过变化遥信和遥测实时刷新数据;如果变电站内的网络通信全部采用可靠性传送的方式将难以达到变电站数据实时性传输的要求。所以,对于变电站内的数据传输问题,应根据站内网络通信的实际运行情况,结合网络应用层不同选择一般性传送或可靠性传送。这样一来,不仅能够保证变电站数据传输的可靠性,也保证了数据传输的实时性。
2.2UDP协议
关键词JAVA,网络,SOCKET,APPLET
网络上的系统结构多为客户/服务器模式,服务器端负责数据和图像等的存储、维护、管理以及传递,客户端则负责人机界面的操作、送出需求及显示收回的数据。
下面介绍一下如何使用JAVA来进行网络编程:
1)由于客户端通过IE同服务器建立联系,所以客户端使用Applet,服务器端使用Application;
2)服务器应设置成多线程,应答多个客户的请求;
3)两端通信使用SOCKET机制。
1Java中输入/输出流概念:
过滤流DataInputStream和DataOutputStream除了分别作为FilterInputStream和FilterOutputStream的子类外,还分别实现了接口DataInput和DataOutput。接口DataInput中定义的方法主要包括从流中读取基本类型的数据、读取一行数据、或者读取指定长度的字节数,如readBoolean()readInt()、readLine()、readFully()等。接口DataOutput中定义的方法主要是向流中写入基本类型的数据或者写入一定长度的字节数组,如writeChar()、writeDouble()DataInputStream可以从所连接的输入流中读取与机器无关的基本类型数据,用以实现一种独立于具体平台的输入方式;DataInputStream可以向所连接的输出流写入基本类型的数据。
2Socket机制
Socket是面向客户/服务器模型设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket通常用来实现客户方和服务方的连接。客户程序可以向Socket写请求,服务器将处理此请求,然后通过Socket将结果返回给用户。
Socket通信机制提供了两种通讯方式:有联接和无联接方式,分别面向不同的应用需求。使用有联接方式时,通信链路提供了可靠的,全双工的字节流服务。在该方式下,通信双方必须创建一个联接过程并建立一条通讯链路,以后的网络通信操作完全在这一对进程之间进行,通信完毕关闭此联接过程。使用无联接方式时其系统开销比无联接方式小,但通信链路提供了不可靠的数据报服务,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行。
3Java语言
Java语言的优点主要表现在:简单、面向对象、多线程、分布性、体系结构中立、安全性等方面。
(1)简单性
Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。Java实现了自动的垃圾收集,简化了内存管理的工作。这使程序设计更加简便,同时减少了出错的可能。
(2)面向对象
Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。
Java是一种完全面向对象的程序设计语言,它除了数组、布尔和字符三个基本数据类型外的其它类都是对象,它不再支持全局变量。在Java中,如果不创建新类就无法创建程序,Java程序在运行时必须先创建一个类的实例,然后才能提交运行。
Java同样支持继承特性,Java的类可以从其它类中继承行为,但Java只支持类的单重继承,即每个类只能从一个类中继承。
Java支持界面,界面允许程序员定义方法但又不立即实现,一个类可以实现多个界面,利用界面可以得到多重继承的许多优点而又没有多重继承的问题。
(3)多线程
多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。
Java程序可以有多个执行线程,如可以让一个线程进行复杂的计算,而让另一个线程与用户进行交互,这样用户可以在不中断计算线程的前提下与系统进行交互。多线程保证了较高的执行效率。
(4)分布性
Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。
(5)体系结构中立
Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。Java为了做到结构中立,除生成机器无关的字节码外,还制定了完全统一的语言文本,如Java的基本数据类型不会随目标机的变化而变化,一个整型总是32位,一个长整型总是64位。
为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。
java.lang:一般的语言包。其中包括用于字符串处理、多线程、异常处理和数字函数等的类,该包是实现Java程序运行平台的基本包
java.util:实用工具包。其中包括哈希表、堆栈、时间和日期等
java.io:基于流模型的输入/输出包。该包用统一的流模型实现了各种格式的输入/输出,包括文件系统、网络和设备的输入/输出等
java.net:网络包。该包支持TCP/IP协议,其中提供了socket、URL和WWW的编程接口
java.awt:抽象窗口工具集。其中实现了可以跨平台的图形用户界面组件,包括窗口、菜单、滚动条和对话框等
java.applet:支持applet程序设计的基本包
(6)安全性
用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
4JAVA工具
(1)JDK
1)Java编译器
Java编译器将Java源代码文件编译成可执行的Java字节码。Java源代码文件的扩展名为.java,Java编译器把这种扩展名的文件编译成扩展名为.class的文件。源文件中的每个类在编译后都将产生一个class文件,这意味一个Java源代码文件可能编译生成多个class文件。
2)Java解释器
Java解释器对编译生成的字节码格式的可执行程序的运行提供支持,它是运行非图形Java程序的命令行工具。
3)Appletviewer
它是JavaApplet的简单测试工具,可使用它来测试JavaApplet程序,而不需要WWW浏览器的支持。
(2)VisualJ++
VisualJ++集成了可视化界面设计、交互式调试、代码编辑、联机帮助信息和介绍如何快速掌握该开发环境的实用向导等多项功能,同时具有能充分利用ActiveX和COM新技术的优势。利用VisualJ++可创建交互性很强的Internet应用程序,是难得的Java开发系统。
5客户机/服务器通信的实现:
(1)Application同Applet的通信
两端通过Socket机制进行连接:
1)客户端的编程流程:
?打开Socket,新建一个套接字;
?为套接字建立一个输入和输出流;
?根据服务器协议从套接字读入或向套接字写入;
?清除套接字和输入/输出流;
2)服务器端的编程流程:
?打开ServerSocket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指定端口为客户端请求的Socket服务;
?使用ServerSocket类的accept()方法使服务器型套接字处于监听状态并把监听结果返回给普通套接字;
?为该普通套接字创建输入和输出流;
?从输入和输出流中读入或写入字节流,进行相应的处理,并将结果返回给客户端;
?在客户端和服务器工作结束后关闭所有的对象,如服务器型的套接字,普通套接字,输入和输出流。
正是由于Java系统具有基于Socket的灵活通信机制,因而其应用程序能自由地打开和访问网络上的对象,就象在本地文件系统中一样。
(2)Applet之间的通信:
Applet之间的通信使用AppletContext类的getApplet()方法。
只要在程序中加入
Appletoneapplet=getAppletContext().getApplet(“first”);便可使用name为first的Applet中的方法了。
在该课题中大量使用了该种通信方法,因为专门同服务器端通信的Applet中包含接收信息方法和发送信息方法,所有客户端的Applet都要使用负责通信的Applet中的方法,所以客户端的Applet同负责通信的Applet必须进行通信。
6程序
//服务器端程序S.java负责与客户端通信
importjava.io.*;
importjava.net.*;
importjava.lang.*;
importT2;
classThreadEchoHandlerextendsThread//创建线程
{
T2theT2=newT2();
Socketincoming;
intcounter;
ThreadEchoHandler(Socketi,intc)
{incoming=i;
counter=c;}
publicvoidrun()
{
try
{
DataInputStreamin=newDataInputStream(incoming.getInputStream());
DataOutputStreamout=newDataOutputStream(incoming.getOutputStream());
System.out.println("hello");
booleandone=false;
while(!done)
{Stringaa="";
Stringstr=in.readUTF();//从客户端得到字符串
//在此加入各自的服务程序
System.out.println(str);
theT2.pass(str);//解码
theT2.tongji();//修改监控库中的信息
aa=theT2.guan();//操纵数据库
System.out.println("stringzis:"+aa);
if(aa.compareTo("null")!=0)
//若是查询数据库,返回查询后的结果
{//若不是查询数据库,不向客户端输出信息
out.writeUTF(aa);
out.flush();}
}//while
incoming.close();//线程关闭
}//try
catch(IOExceptione)
{System.out.println(e);}
}//endrun
}
//----------------------------------------
classS
{
publicstaticvoidmain(String[]args)
{
inti=1;
try
{
ServerSockets=newServerSocket(1111);
for(;;)
{
Socketincoming=s.accept();
System.out.println("connect:"+i);
newThreadEchoHandler(incoming,i).start();
i++;
}
}
catch(Exceptione)
{System.out.println(e);}
}
}
//客户端通信小应用程序Echo.java
importjava.io.*;
importjava.net.*;
importjava.awt.*;
importjava.applet.*;
publicclassEchoextendsApplet
{
TextAreata;
SocketechoSocket;
DataOutputStreamos;
DataInputStreamis;
StringLine;
publicvoidinit()
{
setBackground(Color.white);
ta=newTextArea(5,80);
ta.setEditable(false);
add(ta);
try
{echoSocket=newSocket("10.102.4.41",1111);}//与服务器建立连接
catch(IOExceptione)
{System.out.println("error");}
}
publicvoidst(Stringstri)//发送字符串的方法
{
try
{DataOutputStreamos=newDataOutputStream(echoSocket.getOutputStream());
DataInputStreamis=newDataInputStream(echoSocket.getInputStream());
os.writeUTF(""+stri);//向服务器输送string
os.flush();
}
catch(IOExceptione)
{System.out.println("error:"+e);}
}
publicStringst1()//接收字符串的方法
{
StringLine="";
try
{DataOutputStreamos=newDataOutputStream(echoSocket.getOutputStream());
DataInputStreamis=newDataInputStream(echoSocket.getInputStream());
Line=is.readUTF();//从服务器读来的信息
ta.appendText(""+Line);//在文本域中输出信息
}
catch(IOExceptione)
{System.out.println("error:"+e);}
returnLine;
}
}
7程序调试心得:
1)在建立Socket连接时,两端的端口号必须设为一致,否则建立不了连接。服务器端必须有主机IP地址或主机名参数。
2)连接建立好之后应确定输入和输出流。起初程序中用的是DataInputStream和PrintStream,结果只能传输英文,传输中文时产生乱码,将PrintStream改为DataOutputStream,使用readUTF()和writeUTF()方法后,中文传输问题得到解决。
3)如果一个使用某端口的程序没有关闭,另一个程序就不能使用这个端口。
4)开始进行通信的程序均为Application,因不符合客户机/服务器机制,应将客户端的Application改为Applet。其转化的主要步骤如下:
?创建一个包含APPLET标签的HTML文件;
?去掉应用程序中的main()方法;
?类名应继承Applet类,而不是Frame类,并在程序开头加入
importjava.applet.*;语句;
?用init()方法代替Application程序中的构造方法,当浏览器创建Applet类对象的时候,它自动执行init()方法;
?如Application中缺省使用了BorderLayout布局管理器,应在Applet的init()方法中重新设定;
?如果Application中有setTitle()方法,必须将其去掉,如Application中使用了菜单,在Applet中用按钮来替换。
5)懂得了在一程序中如何引用自定义的类中的方法和变量,在程序开头加入import类名;在程序中加入类名实例=new类名();然后使用
实例.方法(),实例.变量即可。
参考文献
[1]廖雷等,Java程序设计教程,中国电力出版社,2003
上一篇:通信工程职业发展规划(收集5篇)
下一篇:通信高级工程师论文(收集5篇)
热门推荐