一种仿真系统自动同步可靠通信方法技术方案

技术编号:15199026 阅读:116 留言:0更新日期:2017-04-21 20:58
本发明专利技术公开一种仿真系统自动同步可靠通信方法。将网络通信代码封装到一个类中,使仿真系统内的各子系统可以通过该类的对象来方便地实现可靠通信;本发明专利技术的积极效果在于这种可靠通信使得数据包只被接收一次,既不会出现重复接收、接收不到、也不会乱序;它具有TCP传输的可靠性,又克服了TCP传输需要在接收端进行数据包识别的缺点;它不需要像TCP传输那样进行通信连接;因为仿真系统内的各子系统是自主运行的,在运行中某个或某些子系统可能会重新启动,因此其上次运行时的通信关系需要恢复。

Automatic synchronous reliable communication method for simulation system

The invention discloses a method for automatic and reliable communication of a simulation system. The network communications code encapsulated into a class, so each subsystem simulation in the system can conveniently realize reliable communication through the object of the class; the positive effect of the invention is that reliable communication makes the packet is received only once, can't repeat receiving and not receiving or not order; it has reliability of TCP transmission, and overcomes TCP packet transmission needs to be identified shortcomings at the receiving end; it does not need to communicate like that because the TCP transmission; system simulation in the system is independent of operation, in the operation of one or more subsystems may restart, so the relationship between communication the last run to restore.

【技术实现步骤摘要】

本专利技术涉及仿真系统通信
,特别是涉及一种仿真系统自动同步可靠通信方法
技术介绍
在飞行模拟器仿真、电站仿真等大型仿真系统由若干子系统组成,在子系统需要解决网络通信问题。网络通信的信息主要包括两种情况:对于周期性变化且信息状态具有连续特征的信息,可以采用周期性的数据报非可靠传输方式,如飞机位置信息;但对于信息状态具有瞬时性特征的信息,如短暂的射击状态信息,如果采用数据报非可靠传输方式在周期性发送数据包中传输,则如果数据包在传输中丢失,则在下一个传输周期到来时,飞机已由射击状态转为正常状态,射击状态将不可能为其它子系统收到。类似此类的具有瞬时性特征的仿真实体的状态信息,应该与具有连续特征的仿真实体的状态信息分开,采用可靠传输方式进行传输。此外,例如控制台对仿真实体的状态进行配置等仿真管理信息,属于事件型信息,更适合于采用可靠传输方式。目前在仿真系统中普遍采用的可靠传输方式是采用TCP协议。这种方式使用不够方便,主要表现在以下几个方面:一是TCP传输是面向字节流的,在发送端发送的若干数据包是连接在一起一个流的形式传输,因而在接收端必须由用户识别出的数据包的边界;二是TCP传输是面向连接的,在传输前需要首先建立连接;三是仿真系统内的各子系统是自主运行的,在运行中某个或某些子系统可能会重新启动,此时TCP传输无法恢复上次运行时的通信连接,使通信无法进行。本专利技术给出了一种解决以上问题的方法。
技术实现思路
本专利技术的目的是公开一种仿真系统自动同步可靠通信方法,将网络通信代码封装到一个类中,使仿真系统内的各子系统可以通过该类的对象来方便地实现可靠通信;这种可靠通信使得数据包只被接收一次,既不会出现重复接收、接收不到、也不会乱序;它具有TCP传输的可靠性,又克服了TCP传输需要在接收端进行数据包识别的缺点;它不需要像TCP传输那样进行通信连接;因为仿真系统内的各子系统是自主运行的,在运行中某个或某些子系统可能会重新启动,因此其上次运行时的通信关系需要恢复,本专利技术采用自动同步方法来满足这种需求。本专利技术所述的一种仿真系统自动同步可靠通信方法,其技术解决方案如下:包括若干台通过以太网连接的计算机(成为主机),每台主机上运行一个或多个进程,其特征在于,包括一个类UdpLink;相互通信的两个进程通过在各自的进程空间内创建两个互相匹配的所述类UdpLink的对象进行通信;所述匹配由这两个对象的初始化参数来保证;所述两个对象在所述进程间建立起一个逻辑通信信道;相互通信的两个进程使用各自对象的Send操作发送数据、使用第一对象的Recv操作接收数据;所述类UdpLink的对象具有自动同步功能,即当所述相互通信的两个进程或其中之一重新启动后,两个进程之间仍可继续实现通信;一个进程可以通过所述类UdpLink的N(N>1)个对象与一个或多个其它进程建立起N个逻辑通信信道。本专利技术所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述类UdpLink实现如下构造函数:UdpLink(constchar*localIp,unsignedshortlocalPort,constchar*remoteIp,unsignedshortremotePort);其中,localIp是本地ip地址,十进制点字符串标准格式;localPort是本地端口号,以主机序表示;remoteIp是远程ip地址,十进制点字符串标准格式;remotePort是本地端口号,以主机序表示;与localIp,localPort,remoteIp,remotePort等价的信息被存储;被存储的与localIp和localPort等价的信息表示为(localIp,localPort);被存储的与remoteIp和remotePort等价的信息表示为(remoteIp,remotePort)。本专利技术所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述匹配由这两个对象的初始化参数来保证的具体做法是:1)第一进程创建的所述类UdpLink的第一对象按如下形式调用所述构造函数完成初始化操作:UdpLink(第一进程所在的主机上配置的第一ip地址,第一端口号,第二进程所在的主机上配置的第二ip地址,第二端口号);2)第二进程创建的所述类UdpLink的第二对象按如下形式调用所述构造函数完成初始化操作:UdpLink(第二进程所在的主机上配置的第二ip地址,第二端口号,第一进程所在的主机上配置的第一ip地址,第一端口号)。本专利技术所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述类UdpLink的每个对象包括一个发送队列、一个接收队列。本专利技术所述的一种基于UDP协议的自动同步可靠通信方法,其特征在于,所述类UdpLink维持一个后台线程,该线程负责驱动一个进程内的所述类UdpLink的每个对象完成如下操作:1)从(localIp,localPort)向(remoteIp,remotePort)发送位于所述发送队列队首数据包,并在队首数据包被成功接收后从所述发送队列中删除该队首数据包;2)从(localIp,localPort)接收发给该对象的数据包,并把有效数据包加入接收队列队尾;所述有效数据包是指确保按序接收一次且只接收一次的数据包;3)实现所述自动同步功能。本专利技术所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述自动同步功能的实现方法如下:1)所述类UdpLink在硬盘上维持一个自动同步文件,所述自动同步文件存储一个计数值(以下称硬盘同步计数),初值为1;2)所述类UdpLink维持一个静态数据成员,称为本地自动同步计数,初值为0;3)所述类UdpLink维持一个数据成员,称为远程自动同步计数,初值为0;4)当且仅当进程在每次启动后创建所述类UdpLink的首个对象时,所述类UdpLink读取所述自动同步文件中存储的硬盘同步计数到所述本地自动同步计数;然后,所述自动同步文件中的硬盘同步计数加1;5)所述类UdpLink的每个对象被创建后,发送同步数据包,直到接收到同步应答数据包;取出同步应答数据包中的所述本地自动同步计数,并存于所述远程自动同步计数;6)所述类UdpLink的每个对象接收到同步数据包后,如果该同步数据包包含的所述本地自动同步计数比所述远程自动同步计数小,执行如下操作,否则忽略该同步数据包:a)清空所述发送队列和所述接收队列;b)置所述发送计数和所述接收计数为0;c)置所述远程自动同步计数为同步数据包包含的所述本地自动同步计数;d)发同步应答数据包,该同步应答数据包包含该对象的所述本地自动同步计数。本专利技术所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述类UdpLink的Send操作负责生成数据包并把数据包添加到所述发送队列队尾;所述类UdpLink的Recv操作负责获取所述接收队列的队首数据包,并删除该队首数据包。本专利技术的积极效果在于:将网络通信代码封装到一个类中,使仿真系统内的各子系统可以通过该类的对象来实现可靠通信,使用方便。确保数据包只被接收一次,既不会出现重复接收、接收不到、也不会乱序,特别适合于在仿真系统内部传输条件设置信息、仿真对象瞬时发生的状态变化信息,这种瞬时变化信息不适合采用数据报周期传输方式,它常常造成瞬本文档来自技高网...

【技术保护点】
一种仿真系统自动同步可靠通信方法,包括若干台通过以太网连接的计算机(成为主机),每台主机上运行一个或多个进程,其特征在于, 包括一个类UdpLink;相互通信的两个进程通过在各自的进程空间内创建两个互相匹配的所述类UdpLink的对象进行通信;所述匹配由这两个对象的初始化参数来保证;所述两个对象在所述进程间建立起一个逻辑通信信道;相互通信的两个进程使用各自对象的Send操作发送数据、使用第一对象的Recv操作接收数据;所述类UdpLink的对象具有自动同步功能,即当所述相互通信的两个进程或其中之一重新启动后,两个进程之间仍可继续实现通信;一个进程可以通过所述类UdpLink的N(N>1)个对象与一个或多个其它进程建立起N个逻辑通信信道。

【技术特征摘要】
1.一种仿真系统自动同步可靠通信方法,包括若干台通过以太网连接的计算机(成为主机),每台主机上运行一个或多个进程,其特征在于,包括一个类UdpLink;相互通信的两个进程通过在各自的进程空间内创建两个互相匹配的所述类UdpLink的对象进行通信;所述匹配由这两个对象的初始化参数来保证;所述两个对象在所述进程间建立起一个逻辑通信信道;相互通信的两个进程使用各自对象的Send操作发送数据、使用第一对象的Recv操作接收数据;所述类UdpLink的对象具有自动同步功能,即当所述相互通信的两个进程或其中之一重新启动后,两个进程之间仍可继续实现通信;一个进程可以通过所述类UdpLink的N(N>1)个对象与一个或多个其它进程建立起N个逻辑通信信道。2.根据权利要求1所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述类UdpLink实现如下构造函数:UdpLink(constchar*localIp,unsignedshortlocalPort,constchar*remoteIp,unsignedshortremotePort);其中,localIp是本地ip地址,十进制点字符串标准格式;localPort是本地端口号,以主机序表示;remoteIp是远程ip地址,十进制点字符串标准格式;remotePort是本地端口号,以主机序表示;与localIp,localPort,remoteIp,remotePort等价的信息被存储;被存储的与localIp和localPort等价的信息表示为(localIp,localPort);被存储的与remoteIp和remotePort等价的信息表示为(remoteIp,remotePort)。3.根据权利要求2所述的一种仿真系统自动同步可靠通信方法,其特征在于,所述匹配由这两个对象的初始化参数来保证的具体做法是:1)第一进程创建的所述类UdpLink的第一对象按如下形式调用所述构造函数完成初始化操作:UdpLink(第一进程所在的主机上配置的第一ip地址,第一端口号,第二进程所在的主机上配置的第二ip地址,第二端口号);2)第二进程创建的所述类UdpLink的第二对象按如下形式调用所述构造函数完成初始化操作:UdpLink(第二进程所在的主机上配置的第二ip地址,第二端口号,第一进程所在的主机上配置的第一ip地址,第一端口号)。4....

【专利技术属性】
技术研发人员:张志春张继夫肖景新赵秀影步健赵振鹏
申请(专利权)人:中国人民解放军空军航空大学军事仿真技术研究所
类型:发明
国别省市:吉林;22

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1