基于java的数据传输设计的实验报告 高灵琪 1110230015

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于java的数据传输设计的实验报告

基于Java和OPC技术的分布式远程监控系统,系统的结构模型如图1所示。系统的功能是:实现对生产过程的数据采集和存贮,并在远程客户端实现对采集过程的监测和控制。

1.介绍

系统采用多层Client/Server结构。总体上可以分为3个层次:数据服务器层、应用服务器层和客户端。数据服务器负责提供所需的数据,包括系统的实时数据、历史数据和报警信息等;应用服务器接收客户端发出的请求信息,根据客户端的请求与数据服务器进行交互,实现客户端的请求。客户端负责数据曲线的显示,并负责处理用户的监控请求。

2.1系统中的数据传送问题

本系统采用分布式技术,应用服务器和远程客户端分别位于网络中不同的主机上,采集的数据用RMI技术通过网络从服务器端传送到客户端。

系统中,客户端需要完成两项任务,一是对采集过程的监测和控制,并用波形图把采集的数据实时地显示在客户端界面上,这就要求数据采集服务器采集的数据实时的传送到客户端,保证监控的实时性。客户端的另一项任务是,把从服务器端传送过来的数据保存在客户端计算机上,以便用户能浏览和分析采集到的数据。为保证对数据分析的正确和完整,数据采集服务器采集的数据应全部传送到客户端,这就要求数据传送的准确性,即数据应无丢失的在网络上进行传送。总之,数据从服务器端传送到远程客户端时,应满足数据传送的实时性和准确性。

然而,当数据在网络上进行传送时,由于网络的连接情况和拥塞情况具有一定的随机性,很多时候会出现网络抖动的情况,造成客户端与服务器端失去连接,使数据传送中断。为保证数据传送的实时性和准确性,需采取措施,当网络连接出现短时断开的时候,客户端和服务器端应能自动重新建立连接,使实时监控和数据保存继续进行。对于由于网络短时中断时没能传送的数据,应采用缓存的方法,待连接重新建立后,再把这些数据进行传送。

3.1数据传送方案及数据缓存的实现

如前所述,客户端需要完成两项任务:一是对数据采集进行实时监控,二是把从服务器端传送过来的数据保存在客户端计算机上。在这两项任务中,实时监控任务要求保证数据的实时性,即服务器端采集的数据应实时地传送到客户端,让用户及时了解数据采集的情况。而数据保存任务需要的是数据传送的准确和完整,即采集的数据应无丢失的从服务器端传送到客户端。考对传送的要求,为保证他们都能满足各自的功能,本系统在设计数据传送时,把实时监控部分和数据保存部分分开,即分别通过不同的途径从服务器端获得数据。

对数据保存部分,采用在服务器端先用数组缓存数据,缓存数组中的数据达到一定数量后,由服务器主动一次性把这些数据传送到客户端。具体的方法是:在服务器端,对每一通道的数据先用两个数组交替进行缓存,数据采集服务器传送过来的数据先放进数组1,当数据满一定数量后(例如200个),由数组 2接着接收数据,与此同时,新开一个线程,把数组中的数据通过远程方法调用主动传送给客户端。在传送数组时如果网络是中断的,则可利用后面介绍的重连接机制,让客户和服务器重新建立连接,只要在数组2接收200个数据的过程中,连接能够重新建立,把数组1传送成功,就可以保证数据无丢失的传送。这就是本远程监控系统在网络短时中断时,利用数组对数据进行缓存的原理所在。数组2接收满200个数据后,新开一个线程传送数组2,同时由数组1

来接收数据。如此循环。这种数据传送方式的好处是:一方面客户端的实时监控仍可正常实现,不受数据保存的影响。另一方面,通过在服务器端设置缓冲数组后,解决了因网络短时中断后服务器端的数据没有传送到客户端而丢失的问题。例如,通过测试,在本系统中,服务器采集200个数据所用的时间大约为3秒,那么,假设设置的数组大小为20时,则允许网络有3秒短时中断而不会导致数据的丢失。

3.2数据流

本远程监控系统采用上述数据传送方式,描述了系统中客户端和RMI服务器之间的数据流动情况。从图中可以看出,应用服务器端设有一个缓冲数据区,经过缓冲数据区后,数据分两路到达客户端,这两路数据分别用于实时监控功能和数据保存功能。具体情况如下:1)数据采集服务器采集的数据先到达应用服务器的缓冲数据区。缓冲数据区中存放着当前数据,当新的数据到达的时候,新的数据将覆盖原来的数据成为当前数据。2)客户端的实时监控模块通过远程方法调用直接从应用服务器的缓冲数据区获得数据,然后用波形显示出来。3)在应用服务器上,缓冲数据区的数据依次放进缓存数组。两缓冲数组交替存放数据,当一个数组的数据满后,新开一个线程把该数组中的数据传送给客户端,与此同时,由另一数组来接收数据。

3.3网络短时中断后重连接的实现

由于网络的连接情况和拥塞情况具有一定的随机性,很多时候会出现网络抖动的情况,造成客

户端与服务器端瞬间失去连接。因而,系统应具有一定的容错性,当网络连接出现瞬时断开的时候,客户端和服务器端应能自动重新建立连接,保证实时监控和数据保存正常进行。

这个功能的实现可利用Java技术的异常机制。在Java语言中,有很完善的异常处理机制,当网络连接出现断开的情况时,客户连接器进行远程方法调用的时候就会抛出RemoteException异常,我们可以捕获这个异常,然后进行重连接处理。当首次重连接失败之后,客户连接器休眠一个随机的时间后再进行连接。自动重连失败超过一定次数之后,应当向用户报告出错的情况。

以下是本远程监控系统中利用异常机制进行重连接的客户端代码的一部分: private int connectTries=0; //累计连接次数

图 2 客户端和RMI服务器之间的数据流图交替

放入

采集的数据当前数据区数组2

数组1实时监监模块数据保存模块数据采集服务器应用服务器客户端

private int maxConTries=10; //最大连接次数

public ConnectServer(String rmiurl) { //客户端与RMI服务器建立连接的方法

……

try {

connect();

} catch(RemoteException ex) { //捕获远程异常进行重连接处理

try {

reconnect();

} catch(RemoteException e) {…}

相关文档
最新文档