基于UDP协议的远程控制系统的设计与实现Word格式文档下载.docx
- 文档编号:1060850
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:21
- 大小:126.43KB
基于UDP协议的远程控制系统的设计与实现Word格式文档下载.docx
《基于UDP协议的远程控制系统的设计与实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于UDP协议的远程控制系统的设计与实现Word格式文档下载.docx(21页珍藏版)》请在冰点文库上搜索。
2.1UDP的定义4
2.2UDP协议的概述4
2.3UDP的几个特性4
2.4UDP的数据报格式5
2.5UDP协议的应用5
第三章远程控制技术的概述6
3.1远程控制技术的定义6
3.2远程控制技术的原理6
3.3基于UDP协议的远程控制的机制6
第四章系统设计7
4.1基本原理7
4.2客户端检测流程7
4.3服务端监控操作8
4.4具体实现过程11
4.4.1进程检测11
4.4.2客户端和服务端的通讯11
4.4.3创建演示程序12
结论16
参考文献17
第一章引言
1.1本课题的研究背景和意义
随着社会、科技、经济的不断发展,远程控制技术的应用范围也在不断拓展,从最初银行、军事、机要部门等特殊行业领域的应用已经延伸到了今天的电业部门、商业部门、普通工矿企业、道路交通领域、学校教学应用、卫生医疗部门以及宾馆酒店行业等等,其卓越的功能也日益受到各个应用行业的重视和青睐,但是许多远程监控软件都需要配有硬件设备,这不仅使得实际应用的成本升高,而且也使实施应用增加了技术障碍。
虽然有诸多问题的存在,但是我们应该认识到远程控制技术的研究,不仅充分利用了现有资源,拓宽了因特网的利用范围,而且也使远程控制能够减少成本扩大远程化距离,实现任意节点的访问机制,并进入一般的应用领域,比如,进入家庭,人们通过因特网控制家用电器,采用因特网作为远程控制平台,是一项很有前途和潜力的技术,另外它可以应用到设备远程诊断、远程监测、遥控等领域。
因特网的出现及其发展推动了科学技术的各个方面,并使之取得了巨大的进步,利用因特网,可以使远程控制技术得到大范围的应用,从而方便人们的生活。
1.2国内外研究现状目前,基于因特网的远程控制国内外都有不同程度的研究。
相对来说,由于西方国家在信息技术和计算机控制技术的发展上的优势,他们在研究远程控制方面相对早些,而且有些公司有相关的初级产品问世。
国内由于因特网的飞速发展,近几年也开始积极的研究。
国内外在基于因特网的远程机器人控制方面的研究相对其他领域要多一些。
例如美国伯克立大学研制的是一个通过因特网远程控制的种植花草工业机器人手臂。
拥护通过机器人手臂上的摄像机所传输的图像,对这个花园内进行简单的操作。
这些基于UDP协议的远程控制系统普遍采用了客户/服务器网络模型,现场采用摄像机来监视,并通过网络发出指令。
当前,由于网络基础设施还不够完善,所以监视图像由于数据量大,其传输时间过长。
即使是采用了数据压缩技术,也仍然有很大的数据量需要传输,因而由此产生的远程控制时间延迟也必然很大。
此外,这类系统普遍采用瘦客户/肥服务器的网络模型,监控端的控制操作功能过于简单,都只是发一些简单的指令,而不能实现一些复杂的必要的逻辑处理功能。
第三,这类系统在处理上由于时间延迟影响现场控制系统不稳定时,仍然采用的执行-等待-执行-等待的单步执行流程,生产设备运行效率相当低下,第四,大量的采用以图像监视为主的方式,虽然可以使得监控人员更能直观的感受到现场情况,便与监控人员的控制;
但是我们应该注意到,有些设备的被监控状态是难以用图像方式表示出来的,比如温度、速度、压力这类精确的数值量;
此外有些采用图像传输的数据量也可以采用通过数据传输关键数据以在监控端进行实况模拟图,这样就会减少数据量,而使数据传输速度大大提高。
第二章UDP协议的基本情况
2.1UDP的定义
UDP是UserDatagramProtocoI的简称,中文名是用户数据包协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
它是IETFRFC768是UDP的正式规范。
UDP协议(UserDatagramProtocol,用户数据报文协议)与TCP协议一样也是OSI传输层上的一个通信协议。
不过UDP协议是一个面向无连接的协议(TCP是向面连接的协议)。
一个UDP连接的建立,不必象TCP协议那样需要服务器端侦听,也不需要有客户机端请求连接和服务器端建立连接后双方才能通信。
2.2UDP协议的概述
UDP协议的全称是用户数据包协议,在网络中它与TCP协议一样用于
处理数据包。
在OSI模型中,在第四层一一传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
UDP用来支持那
些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问
世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输
层协议。
与所熟知的TCP(传输控制协议)协议一样,UDP协议直接位于IP(网际协议)协议的顶层。
根据OSI(开放系统互连)参考模型,UDP和TCP都属于传输层协议。
UDP协议的主要作用是将网络数据流量压缩成数据包的形式。
一个典型的数据包就是一个二进制数据的传输单位。
每一个数据包的前8个字节
用来包含报头信息,剩余字节则用来包含具体的传输数据。
2.3UDP的几个特性
(1)UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔
到网络上。
在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的
速度、计算机的能力和传输带宽的限制;
在接收端,UDP把每个消息段放
在队列中,应用程序每次从队列中读一个消息段。
(2)由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3)UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4)吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。
发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。
既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。
例如,在屏幕上报告股票市场、在屏幕上显示航空信息等等。
UDP也用在
路由信息协议RIP(RoutingInformationProtocol)中修改路由表。
在这些应用场合下,如果有一个消息丢失,在几秒之后另一个新的消息就会替换它。
UDP广泛用在多媒体应用中,例如,ProgressiveNetworks公司开发的RealAudio软件,它是在因特网上把预先录制的或者现场音乐实时传送给客
户机的一种软件,该软件使用的RealAudioaudio-on-demandprotocol协议就是运行在UDP之上的协议,大多数因特网电话软件产品也都运行在UDP
之上。
2.4UDP的数据报格式
在这个数据报格式中,源端口是可选域,当其有意义时,指的是发送应用程序的UDP端口。
如果不使用它,则在此域中填0。
目的端口在有特定的目的网络地址时有意义,指目标应用程序的UDP端口。
长度指的是此用户数据报长度的八进制表示(这表明最小的数据报长度是8)。
校验和同样是一种简单的数学
运算,用于检查UDP消息中的位级错误。
是对IP头、UDP头和数据中信息包头的数位取反之和,再取反得到的。
UDP协议包不具备TCP协议包复杂的可靠性与控制机制,没有“序列”和“确认”两个字段。
2.5UDP协议的应用
既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢?
其实不然,在有些情况下UDP协议可能会变得非常有用。
因为UDP
具有TCP所望尘莫及的速度优势。
虽然TCP协议中植入了各种安全保障功
能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。
反观UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
关于UDP协议的最早规范是RFC768,1980年发布。
尽管时间已经很长,但是UDP协议仍然继续在主流应用中发挥着作用。
包括视频电话会议系统在内的许多应用都证明了UDP协议的存在价值。
因为相对于可靠性来
说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,会面质量)。
这就是UDP和TCP两种协议的权衡之处。
根据不同的环境和特点,两种传
输协议都将在今后的网络世界中发挥更加重要的作用。
第三章远程控制技术的概述
3.1远程控制技术的定义
计算机远程控制技术是在网络上由一台计算机远距离去控制另一台或多台计算机的技术。
目前远程控制方式有几种:
远程登录方式、Client/Server方式、web方式。
其中Client/Server方式用的最为广泛。
3.2远程控制技术的原理
使用前需要在控制端运行客户端程序,在受控端运行服务器程序。
然后由控制端向受控端发出信号,建立一个特殊的远程服务,再通过这个服务,使用各种远程控制功能发送远程控制命令,控制受控端电脑中的各种应用程序运行,这种远程控制方式称为基于远程服务的远程控制。
远程控制软件实际上是一种客户机/服务
器程序,服务器程序安装在被控制的计算机端,客户端安装在控制端,客户端发送命令,服务器端接受命令并执行相应的操作因此解决网络客户端与服务器端的通信就成了远程控制实现的基础。
Winsock、通信是网络通信过程中应用广泛、使用灵活的一种方式,本文使用Winsock控件实现远程计算机的连接,并通过TCP或者UDP协议进行数据交换。
这两种协议之间的重要区别在于它们的连接状态不同:
TCP协议是基于连接的协议,提供可靠的流服务;
而UDP协议是一种无连接协议,提供数据报文服务,使用UDP协议系统资源开销小,传输速度快,但可靠性不如TCP协议。
3.3基于UDP协议的远程控制的机制
UDP(UserDatagramProtocol,意为用户报文协议)是Internet上广泛采用的通信协议之一。
与TCP协议不同,它是一种非连接的传输协议,没有确认机制,可靠性不如TCP,但它的效率却比TCP高,用于远程屏幕监视还是比较适合的。
同时,UDP控件不区分服务器端和客户端,只区分发送端和接收端,编程上较为简单,故选用UDP协议,使用C++Builder6.0提供的TNMUD控件。
远程控制中对被控端实现的关机、重启、注销、计算机IP地址获取、
计算机键盘锁定以及自动截屏等功能需要被控端及时反应,且发送这些命令的消息占用的字节较少,在传输距离不算太长,信号衰减较弱的情况下,基于大量的被控端本文考虑使用UDP协议来进行控制端与被控端之间的通,尤其可以利用Winsock在UDP协议下的广播功能来实现对全体被控端的远程关机、重启等操作。
抓屏后形成的图像文件数据所占的字节数是
远远大于那些控制消息的,因此需要将图像数据分块进行多次传输为了能在控制端看到完整的所截图像,必须采用TCP协议,因为UDP协议是一种
无连接协议,不能保证数据的可靠传输。
图1描述了主控端与被控端之间的
控制和通信机制。
控制端(客户端)
通过HDP协议向各个被控端发送各种控制命令
图1客户端控制多台服务器
第四章系统设计
4.1基本原理
完整的业务系统通常包括很多基于局域网的软件模块,而且功能差异较大的模块常常分散在不同的计算机上,如果分别在运行软件模块的计算上对进程进行监控,不仅浪费计算机资源,而且工作点分散,工作效率不高。
基于C/S结构设计监控系统,将有利于系统的集约化管理。
客户端定时采集进程状态,并把状态信息发送到服务端,服务端就可以集中处理远程被监控的程序运行状态信息,并对收到的消息进行响应。
客户端和服务端之间采用UDP协议传送信息。
客户端和服务端均有
UDP通讯服务端和UDP通讯客户端,且UDP通讯服务端一直处于侦听状态,一旦收到消息立即处理,同时还可以根据需要,利用UDP通讯客户端
方发送信息。
4.2客户端检测流程
客户端发送到服务端的信息称为“消息”。
服务端对客户端所发出的信息称为“指令”。
客户端驻留程序有两个模块:
一是定时对特定的软件进程进行模块检测,此模块定时检测进程并向服务端发送相关消息,进行相关处理;
二是执行客户端指令模块,此模块主要功能是执行服务端指令。
客户端进程检测及消息处理流程如图1所示。
进程正常
图1客户端进程检测及消息处理流程
如果进程存在、且正常响应,则按照规定的格式发送“进程存在、进程响应”信息到服务端;
如果进程不存在,先发送“进程不存在”信息到服务端,然后按照配置文件中规定的处理方式进行操作;
如果进程存在,但是没有响应,则先向服务端发送“进程存在、进程无响应”信息,然后按照配置文件规定的处理方式进行操作。
4.3服务端监控操作
服务端程序对所有需监控的远程进程统一管理时,根据收到的消息做出响应处理,并判断是否向客户端发送指令以及指令的内容。
虽然在检测配置文件中规定了重启进程或重启计算机的操作,但为了防止检测程序出错、相关进程软件完整性受损等客户端计算机自身无法解决的问题,规定服务端可以向客户端发送以下指令:
“更新进程软件包”;
“立即检测进程”;
“重启计算机”。
服务端消息处理及指令发送的流程如图2所示。
收到客户端发送的“进程存在、进程响应”信息时,则提示“进程正常工作”。
收到客户端发送的“进程不存在”信息到服务端,则提示“正在重新启动进程”,并记录有关信息,进入指令发送操作;
收到客户端发送的“进程存在、进程无响应”信息时,则提示“正在处理阻塞进程”,并记录有关信息,进入指令发送操作。
指令发送操作按以下流程进行。
4.3.1每隔30秒检测一次网络连通状况,如持续3分钟仍无响应时,采用语音报警的方式,提请人工干预,系统挂起,直到网络通讯正常后进入下一流程。
4.3.2发出“立即检测进程”指令,提示“正在检测进程”,等待客户端返回信息。
收到“进程存在、进程响应”信息后,则提示“进程正常工作”,结束发送指令操作,否则进入下一流程。
4.3.3发出“重启计算机”指令后,提示“正在重新启动计算机”,然后每隔30秒检测一次网络连通状况,如持续5分钟仍无响应时,采用语音报警的方式,提请人工干预,系统挂起,直到网络通讯正常后进入下一流程。
4.3.4发出“立即检测进程”指令,提示“正在检测进程”,等待客户端返回信息。
收到“进程存在、进程响应”信息后,则提示“进程正常工作”,结束发送指令操作;
否则进入下一流程。
4.3.5发出“更新进程软件包”指令后,提示“正在更新进程软件包”然后每隔30秒检测一次网络连通状况,如持续2分钟仍无响应时,采用语音报警的方式,提请人工干预,系统挂起,直到网络通讯正常后进入下一流程。
4.3.6发出“立即检测进程”指令,提示“正在检测进程”,等待客户端返回信息。
否则采用语音报警的方式,提请人工操作。
图2服务端消息处理及指令发送流稈
4.4具体实现过程
4.4.1进程检测
在NET2.0中Process类提供了可以判断进程是否存在或是否有响应的方法。
假设一个需要在客户端运行的进程对应的程序名为Test.exe。
则探
测该进程是否存在或是否有响应的C#代码如下:
stringMyProgram="
Test"
;
Process[]MyProcesses=Process.GetProcessesByName(MyProgram);
If(MyProcesses.Length==0)
{
//“进程不存在”对应的程序段
}
else
//“进程存在”对应的程序段
foreach(ProcessMyProcessinMyProcesses)
If(MyProcess.Responding)
//“进程正常工作”对应的程序段
//“进程不响应”对应的程序段
4.4.2客户端和服务端的通讯
利用UDP网络协议,可以实现客户端和服务端的相互通讯。
在
NET2.0环境下,System.Net.Sockets命名空间包含一个名为UdpCIient的类。
利用UdpCIient类,可以轻松创建UDP通讯客户端和服务端。
C#实现UDP通讯客户端关键代码如下:
usingSystem.Net.Sockets;
usingSystem.Management;
stringRemoteIP="192.168.0.1";
//服务端IP
intRemotePort=8800;
//服务端端口
IPEndPointMyRemoteEndPoint=newIPEndPoint(IPAddress.Parse(RemoteIP),RemotePort);
UdpClientMyClient=newUdpClient();
Byte[]MyData=System.Text.Encoding.Default.GetBytes("需要发送的消息");
//Send方法便可以实现发送消息。
MyClient.Send(MyData,MyData.Length,MyRemoteEndPoint);
以上代码段便可以实现向192.168.0.1发送消息,而UDP通讯服务
端实现类似客户端,关键代码如下:
stringMyIP="
127.0.0.1"
//本地服务端地址
intMyPort=8800;
//接收端口
UdpClientMyClient=newUdpClient(MyPort);
while(true)
IPEndPointMyEndPoint=newIPEndPoint(IPAddress.Parse(MyIP),MyPort);
Byte[]MyData=MyClient.Receiv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 UDP 协议 远程 控制系统 设计 实现