一种时间同步方法、客户端及计算机可读存储介质与流程

文档序号:15816991发布日期:2018-11-02 22:44阅读:207来源:国知局
一种时间同步方法、客户端及计算机可读存储介质与流程

本发明涉及通信领域,尤其涉及一种时间同步方法、客户端及计算机可读存储介质。

背景技术

简单网络时间协议(sntp,simplenetworkprotocol)是一种跨广域网或局域网同步时间的协议,具有较高的精确度,sntp采用的是客户端/服务器的工作方式,包括以太网单播模式和广播模式。其中,单播模式为客户端定期直接与sntp服务器进行交互来获取时间差进行时间校正,具体的,如图1所示,sntp客户端利用客户端程序将发送时间t1时刻写入sntp同步请求报文,并在t1'时刻通过硬件电路将sntp同步请求报文发送至sntp服务器,sntp服务器在t2时刻接收到sntp客户端发送的sntp同步请求报文,并在t3时刻将响应sntp同步请求报文的sntp同步响应报文发送至sntp客户端,sntp客户端的硬件电路在t4'时刻接收到sntp同步响应报文之后,利用客户端程序获取t4时刻作为接收时间,最后,sntp客户端利用t1、t2、t3和t4计算sntp客户端和sntp服务器之间的时间差值,从而对sntp客户端进行时间校正。

然而,利用客户端程序等软件方式获取的t1和sntp客户端真正发出同步请求的时间t1'之间存在t1-t1'的时间差,利用软件方式获取的t4和sntp客户端真正接收到同步响应的时间t4'之间存在t4-t4'的时间差,导致利用t1、t2、t3和t4计算sntp客户端和sntp服务器之间的时间差值时,得到的时间差值存在误差,从而影响了sntp客户端的对时精度。



技术实现要素:

为解决上述技术问题,本发明实施例期望提供一种时间同步方法、客户端及计算机可读存储介质,能够降低计算客户端和服务器之间的时间差值时的计算误差,提高客户端的对时精度。

本发明的技术方案是这样实现的:

本发明实施例提供一种时间同步方法,应用于客户端,所述客户端上设置硬件电路,所述客户端通过所述硬件电路与服务器进行数据交互,所述方法包括:

利用客户端程序得到时间同步请求报文;

当通过所述硬件电路将所述时间同步请求报文发送至所述服务器时,利用所述硬件电路获取第一发送时间;

将所述第一发送时间添加至所述时间同步请求报文,以完成将所述时间同步请求报文发送至所述服务器的过程;

当通过所述硬件电路从所述服务器接收到时间同步响应报文时,利用所述硬件电路获取第一接收时间,所述时间同步响应报文为响应所述时间同步请求报文的报文;

根据所述第一发送时间、第一接收时间和预设同步算法,以利用所述时间差值完成所述客户端和所述服务器之间的时间同步的过程。

在上述方法中,所述时间同步响应报文包括第二接收时间和第二发送时间,所述第二接收时间为所述服务器接收到所述时间同步请求报文的时间,所述第二发送时间为所述服务器发送所述时间同步响应报文的时间,所述根据所述第一发送时间、第一接收时间和预设同步算法,计算出所述客户端与所述服务器之间的时间差值,包括:

利用所述第一发送时间、所述第一接收时间、所述第二发送时间、所述第二接收时间和所述预设同步算法,计算出所述时间差值。

在上述方法中,所述利用所述第一发送时间、所述第一接收时间、所述第二发送时间、所述第二接收时间和所述预设同步算法,计算出所述时间差值,包括:

分别获取所述第二接收时间和所述第一发送时间的第一时间差、所述第一接收时间和所述第二发送时间的第二时间差;

计算出所述第一时间差和所述第二时间差的平均值;

将所述平均值确定为所述时间差值。

在上述方法中,所述当通过所述硬件电路将所述时间同步请求报文发送至所述服务器时,利用所述硬件电路获取第一发送时间,包括:

将所述时间同步请求报文封装成第一报文帧;

通过所述硬件电路将所述第一报文帧发送至所述服务器;

当通过所述硬件电路检测到所述第一报文帧中的第一帧起始符时,获取所述第一发送时间;

相应的,所述将所述第一发送时间添加至所述时间同步请求报文,包括:

在所述第一报文帧添加所述第一发送时间。

在上述方法中,所述利用所述硬件电路获取第一接收时间,包括:

从所述服务器接收第二报文帧;

在通过所述硬件电路检测到所述第二报文帧的第二起始符时,获取所述第一接收时间。

在上述方法中,所述利用所述硬件电路获取第一接收时间之后,所述根据所述第一发送时间、第一接收时间和预设同步算法,计算出所述客户端与所述服务器之间的时间差值之前,所述方法还包括:

将所述第一接收时间添加至所述第二报文帧中;

将所述第二报文帧解封成所述时间同步响应报文;

从所述时间同步响应报文中获取所述第一发送时间、所述第一接收时间、所述第二发送时间和所述第二接收时间。

本发明实施例提供一种客户端,所述客户端与服务器进行数据交互,所述客户端包括:

处理器,所述处理器设置有第一通信接口;

与所述处理器通过所述第一通信接口和第二通信接口连接的硬件电路,所述硬件电路上设置有所述第二通信接口和第三通信接口,所述硬件电路通过所述第三通信接口与所述服务器连接;其中,

所述处理器,用于当运行客户端程序得到时间同步请求报文时,将所述时间同步请求报文传输至所述硬件电路;

所述硬件电路,用于当将所述时间同步请求报文发送至所述服务器时,获取第一发送时间;当从所述服务器接收到响应所述时间同步请求报文的时间同步响应报文时,获取第一接收时间,并将所述第一发送时间和所述第一接收时间传输至所述处理器;

所述处理器,还用于利用所述第一发送时间、所述第一接收时间和预设同步算法,计算出所述客户端与所述服务器之间的时间差值;以利用所述时间差值完成所述客户端和所述服务器之间的时间同步的过程。

在上述客户端中,所述硬件电路,具体用于将所述第一发送时间添加至所述时间同步请求报文中,并将所述时间同步请求报文发送至所述服务器;

所述硬件电路,具体用于将所述第一接收时间添加至所述时间同步响应报文,并将所述时间同步响应报文传输至所述处理器,以将所述第一发送时间和所述第一接收时间传输至所述处理器。

在上述客户端中,所述时间同步响应报文包括第二接收时间和第二发送时间,所述第二接收时间为所述服务器接收到所述时间同步请求报文的时间,所述第二发送时间为所述服务器发送所述时间同步请求报文的时间;

所述处理器,具体用于利用所述第一发送时间、所述第一接收时间、所述第二发送时间、所述第二接收时间和所述预设同步算法,得到时间差值。

在上述客户端中,所述处理器,具体用于分别获取所述第二接收时间和所述第一发送时间的第一时间差、所述第一接收时间和所述第二发送时间的第二时间差;计算出所述第一时间差和所述第二时间差的平均值,将所述平均值确定为所述时间差值。

在上述客户端中,所述硬件电路,还用于将所述时间同步请求报文封装成第一报文帧,将所述第一报文帧发送至所述服务器;从所述服务器接收第二报文帧,并将所述第二报文帧解封成所述时间同步响应报文。

在上述客户端中,所述硬件电路,具体用于当检测到所述第一报文帧的第一帧起始符时,获取所述第一发送时间;在所述第一报文帧添加所述第一发送时间;将所述第一报文帧发送至所述服务器;

所述硬件电路,具体用于当检测到所述第二报文帧的第二帧起始符时,获取所述第一接收时间;将所述第一接收时间添加至所述第二报文帧中;

所述处理器,还用于将所述第二报文帧解封成所述时间同步响应报文;从所述时间同步响应报文中获取所述第一发送时间、所述第一接收时间、所述第二发送时间和所述第二接收时间。

本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,应用于客户端中,该计算机程序被的处理器执行时实现如上述任一项所述时间同步的方法。

本发明实施例公开了一种时间同步方法、客户端及计算机可读存储介质,应用于客户端,客户端上设置硬件电路,客户端通过硬件电路与服务器进行数据交互,利用客户端程序得到时间同步请求报文;当通过硬件电路将时间同步请求报文发送至服务器时,利用硬件电路获取第一发送时间;将第一发送时间添加至时间同步请求报文,以完成将时间同步请求报文发送至服务器的过程;当通过硬件电路从服务器接收到时间同步响应报文时,利用硬件电路获取第一接收时间,时间同步响应报文为响应时间同步请求报文的报文;根据第一发送时间、第一接收时间和预设同步算法,计算出客户端与服务器之间的时间差值;以利用时间差值完成客户端与服务器之间的时间同步的过程。采用上述技术实现方案,当硬件电路检测到向服务器发送的时间同步请求报文时,硬件电路获取第一发送时间;当硬件电路检测到服务器发送的时间同步响应报文时,直接获取第一接收时间,使得客户端获取到的第一发送时间更接近真正的时间同步请求报文的发出时间、第一接收时间更接近真正的时间同步响应报文的接收时间,故,客户端利用第一发送时间和第一接收时间计算时间差值时,能够降低计算误差,进而提高客户端的对时精度。

附图说明

图1为现有技术中时间同步的示意图;

图2为本发明实施例提供的一种sntp对时报文的报文格式;

图3为本发明实施例提供的一种时间同步方法的流程图;

图4为本发明实施例提供的一种示例性的fpga获取第一发送时间的获取时机的示意图;

图5为本发明实施例提供的一种示例性的fpga获取第一接收时间的获取时机的示意图;

图6为本发明实施例提供的一种时间同步方法的交互图;

图7为本发明实施例提供的一种时间同步的示意图;

图8为本发明实施例提供的一种客户端的结构示意图;

图9为本发明实施例提供的一种示例性的sntp客户端和sntp服务器之间的连接关系图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

sntp对时报文格式如图2所示,其中各个字段的含义为:

l1为跳跃指示器;

vn为版本号;

mode为工作模式,该字段包括以下值:0-预留;1-对称行为;3-客户机;4-服务器;5-广播;6-ntp控制信息;

stratum:对本地市中级别的整体识别;

poll:有符号整数表示连续信息间的最大间隔;

precision:有符号整数表示联系信息间的最大间隔;

rootdelay:表示到达主参考源的依次往复的总延时,它是有15-16位小数部分的符号定点小数;

rootdispersion:表示一次到达主参考源的标准误差,它是有15-16位小数部分的无符号定点小数;

referenceid:识别特殊参考源;

originatetimestamp:这是向服务器请求分离客户机的时间,采用64位时标格式;

receivetimestamp:这是向服务器请求到达客户机的时间,采用64位时标格式;

transmittimestamp:这是向客户机答复分离服务器的时间,采用64位时标格式;

destinationtimestamp:这是到达客户机的时间,采用64为时标格式;

authenticator(optical):当实现了ntp认证模式时,主要标示符和信息数字域就包括已定义的信息认证代码(mac)信息。

实施例一

本发明实施例提供一种时间同步方法,应用于客户端,客户端包括设置有第一通信接口的硬件电路,客户端通过第一通信接口与服务器进行数据交互,如图3所示,该方法可以包括:

s101、利用客户端程序得到时间同步请求报文。

本发明实施例提供的一种时间同步方法适用于将客户端的时间同步为与服务器时间一致的场景下。

本发明实施例中,客户端为sntp客户端、与客户端进行数据交互的服务器为sntp服务器。

本发明实施例中,硬件电路为现场可编程门阵列(fpga,field-programmablegatearray)等,具体的根据实际情况进行选择,本发明实施例不做具体的限定。

本发明实施例中,处理器为中央处理器(cpu,centralprocessingunit),具体的根据实际情况进行选择,本发明实施例不做具体的限定。

本发明实施例中,sntp客户端的cpu运行客户端程序,得到sntp对时请求报文(时间同步请求报文),其中,cpu上设置有介质访问控制子层(mac,mediaaccesscontrol)接口,fpga上设置有与cpu配对的mac接口,cpu和fpga通过mac接口进行mac直连。

s102、当通过硬件电路将时间同步请求报文发送至服务器时,利用硬件电路获取第一发送时间。

当客户端利用客户端程序得到时间同步请求报文时,硬件电路检测时间同步请求报文是否发送至服务器,当硬件电路检测到客户端将时间同步请求报文发送至服务器时,硬件电路获取第一发送时间。

本发明实施例中,硬件电路上设置有以太网接口(第一通信接口),sntp服务器上也设置有以太网接口,硬件电路和sntp服务器通过以太网接口连接,并进行数据交互。

本发明实施例中,cpu将sntp对时请求报文通过mac接口传输至fpga,此时,当fpga将sntp对时请求报文发送至sntp服务器时,fpga获取第一发送时间。

本发明实施例中,sntp客户端和sntp服务器之间传输的是数据帧,故,sntp客户端和sntp服务器在发送sntp对时报文时,是以以太网报文帧的格式进行发送的。

本发明实施例中,sntp客户端将时间同步请求报文封装成第一报文帧,并通过fpga将第一报文帧发送至sntp服务器,其中,第一报文帧的发送顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在检测到传输以太网帧开始分界符时,获取第一发送时间。

s103、将第一发送时间添加至时间同步请求报文,以完成将时间同步请求报文发送至服务器的过程。

当硬件电路获取到第一发送时间之后,硬件电路就要将第一发送时间添加至时间同步请求报文,以完成将时间同步请求报文发送至服务器的过程了。

本发明实施例中,sntp客户端将第一发送时间填入sntp对时请求报文的originatetimestamp字段中,之后继续将第一报文帧发送至sntp服务器。

示例性的,如图4所示,sntp客户端发送sntp对时请求报文帧的发送顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在检测到传输以太网帧开始分界符时,获取系统时间,并将该系统时间填入sntp对时请求报文的originatetimestamp字段中。

s104、当通过硬件电路从服务器接收到时间同步响应报文时,利用硬件电路获取第一接收时间,时间同步响应报文为响应时间同步请求报文的报文。

当客户端通过硬件电路将时间同步请求报文发送至服务器之后,客户端就要通过硬件电路实时接收服务器发送的时间同步响应报文了,当通过硬件电路从服务器接收到时间同步响应报文时,客户端利用硬件电路获取第一接收时间。

本发明实施例中,sntp服务器在接收到sntp对时请求报文时,获取第二接收时间,并将第二接收时间添加至sntp对时请求报文的receivetimestamp字段中,之后sntp服务器获取本地时钟信息(第二发送时间),填入sntp对时请求报文的transmittimestamp字段中,得到sntp对时响应报文(时间同步响应报文),并将sntp对时响应报文通过以太网接口发送至sntp客户端中。

本发明实施例中,当fpga接收到sntp对时响应报文对应的第二报文帧时,fpga的接收顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在接收到以太网帧开始分界符时,获取第一接收时间,并将该第一接收时间填入sntp对时响应报文的destinationtimestamp字段中。

示例性的,如图5所示,sntp客户端接收到sntp对时响应报文帧的接收顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在接收到以太网帧开始分界符时,获取系统时间,并将该系统时间填入sntp对时响应报文的destinationtimestamp字段中。

本发明实施例中,fpga将sntp对时响应报文传输至cpu,此时cpu从sntp对时响应报文中确定出第一发送时间、第一接收时间、第二发送时间和第二接收时间。

s105、根据第一发送时间、第一接收时间和预设同步算法,计算出客户端与服务器之间的时间差值,以利用时间差值完成客户端和服务器之间的时间同步的过程。

当客户端利用硬件电路获取到第一发送时间和第一接收时间时,客户端就要根据第一发送时间、第一接收时间和预设同步算法,计算出客户端与服务器之间的时间差值,并利用时间差值完成客户端和服务器之间的时间同步的过程了。

本发明实施例中,cpu根据第一发送时间、第一接收时间、第二发送时间和第二接收时间来计算时间差值。

本发明实施例中,cpu分别获取第二接收时间和第一发送时间的第一时间差、和第一接收时间和第二发送时间的第二时间差,之后,计算第一时间差和第二时间差的平均值,并将平均值确定为时间差值。

具体的,预设同步算法为:

((t2-t1)+(t3-t4))/2(1)

其中,t1为第一发送时间,t2为第二接收时间,t3为第二发送时间,t4为第一接收时间。

本发明实施例中,sntp客户端获取自身的本地时钟,并将本地时钟加上时间差值,即可与sntp服务器保持时间同步。

可以理解的是,当硬件电路检测到向服务器发送的时间同步请求报文时,硬件电路获取第一发送时间;当硬件电路检测到服务器发送的时间同步响应报文时,直接获取第一接收时间,使得客户端获取到的第一发送时间更接近真正的时间同步请求报文的发出时间、第一接收时间更接近真正的时间同步响应报文的接收时间,故,客户端利用第一发送时间和第一接收时间计算时间差值时,能够降低计算误差,进而提高客户端的对时精度。

实施例二

本发明实施例提供一种本发明实施例提供一种时间同步方法,应用于客户端,客户端上设置硬件电路,客户端通过硬件电路与服务器进行数据交互,如图6所示,该方法可以包括:

s201、客户端利用客户端程序得到时间同步请求报文。

本发明实施例提供的一种时间同步方法适用于将客户端的时间同步为与服务器时间一致的场景下。

本发明实施例中,客户端为sntp客户端、与客户端进行数据交互的服务器为sntp服务器。

本发明实施例中,硬件电路为fpga等,具体的根据实际情况进行选择,本发明实施例不做具体的限定。

本发明实施例中,sntp客户端的cpu运行客户端程序,得到sntp对时请求报文,其中,cpu上设置有mac接口,fpga上设置有与cpu配对的mac接口,cpu和fpga通过mac接口进行mac直连。

s202、客户端将时间同步请求报文封装成第一报文帧。

当客户端利用客户端程序得到时间同步请求报文之后,客户端就要将时间同步请求报文封装成第一报文帧了。

本发明实施例中,硬件电路上还设置有以太网接口,sntp服务器上也设置有以太网接口,硬件电路和sntp服务器通过以太网接口连接,并进行数据交互。

本发明实施例中,sntp客户端和sntp服务器之间传输的是数据帧,故,sntp客户端和sntp服务器在发送sntp对时报文时,是以以太网报文帧的格式进行发送的。

本发明实施例中,sntp客户端将sntp对时请求报文封装成第一报文帧。

s203、客户端通过硬件电路将第一报文帧发送至服务器。

当客户端将时间同步请求报文封装成第一报文帧之后,客户端就要通过硬件电路将第一报文帧发送至服务器了。

本发明实施例中,第一报文帧的发送顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga通过以太网接口按照第一报文帧的发送顺序将第一报文帧发送至服务器。

s204、在通过硬件电路检测到第一报文帧中的第一帧起始符时,客户端利用硬件电路获取第一发送时间。

当客户端通过硬件电路将第一报文帧发送至服务器之后,客户端就要利用硬件电路检测第一报文帧中的第一帧起始符了,并在检测到第一帧起始符时,通过硬件电路获取第一发送时间。

本发明实施例中,fpga在检测到传输以太网帧开始分界符时,获取第一发送时间。

s205、客户端在第一报文帧添加第一发送时间,以完成将时间同步请求报文发送至服务器的过程。

当客户端获取到第一发送时间时,客户端就要在第一报文帧添加第一发送时间,来完成将时间同步请求报文发送至服务其的过程了。

本发明实施例中,sntp客户端将第一发送时间填入sntp对时请求报文的originatetimestamp字段中。

示例性的,如图4所示,sntp客户端发送sntp对时请求报文帧的发送顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在检测到传输以太网帧开始分界符时,获取系统时间,并将该系统时间填入sntp对时请求报文的originatetimestamp字段中。

本发明实施例中,fpga继续将添加了第一接收时间的第一报文帧发送至sntp服务器中,以完成将时间同步请求报文发送至sntp服务器的过程。

s206、服务器获取接收到第一报文帧的第二接收时间,并将第二接收时间添加至第一报文帧中。

当客户端将第一报文帧发送至服务器之后,服务器就要获取接收到第一报文帧的第二接收时间,并将第二接收时间添加至第一报文帧中了。

本发明实施例中,sntp服务器在接收到第一报文帧时,获取第二接收时间,并将第二接收时间添加至sntp对时请求报文的receivetimestamp字段中。

s207、当服务器响应第一报文帧时,服务器获取第二发送时间,并将第二发送时间添加至第一报文帧中,得到第二报文帧。

当服务器将第二接收时间添加至第一报文帧之后,服务器就要响应第一报文帧了,此时服务器获取第二发送时间,并将第二发送时间添加至第一报文帧中,得到第二报文帧。

本发明实施例中,sntp服务器响应第一报文帧,此时,sntp服务器获取响应第一报文帧的第二发送时间,并将第二发送时间添加至第一报文帧中,得到第二报文帧。

本发明实施例中,sntp服务器获取本地时钟信息,填入sntp对时请求报文的transmittimestamp字段中。

s208、服务器将第二报文帧发送至客户端。

当服务器得到第二报文帧之后,服务器就要将第二报文帧发送至客户端了。

本发明实施例中,sntp服务器通过以太网接口将第二报文帧发送至fpga。

s209、在通过硬件电路检测到第二报文帧的第二起始符时,客户端获取第一接收时间。

当客户端接收到第二报文帧之后,客户端就要通过硬件电路检测第二报文帧的第二起始符,并在检测到第二起始符时,利用硬件电路获取第一接收时间了。

本发明实施例中,当fpga接收第二报文帧之后,fpga检测是否接收到以太网帧开始分界符,当fpga接收到以太网帧开始分界符时,fpga获取第一接收时间。

s210、客户端将第一接收时间添加至第二报文帧中。

当客户端获取到第一接收时间之后,客户端就要将第一接收时间添加至第二报文帧中了。

本发明实施例中,sntp客户端将第一接收时间填入sntp对时响应报文的destinationtimestamp中。

示例性的,如图5所示,sntp客户端接收到sntp对时响应报文帧的接收顺序为以太网前导码、以太网帧开始分界符和以太网报文,fpga在接收到以太网帧开始分界符时,获取系统时间,并将该系统时间填入sntp对时响应报文的destinationtimestamp字段中。

s211、客户端将第二报文帧解封成时间同步同步响应报文。

当客户端将第一接收时间添加至第二报文帧之后,客户端就要将第二报文帧解封成时间同步响应报文了。

本发明实施例中,sntp客户端将第二报文帧解封成时间同步响应报文。

s212、客户端从时间同步响应报文中获取第一发送时间、第一接收时间、第二发送时间和第二接收时间。

当客户端将第二报文帧解封成时间同步响应报文之后,客户端就要从时间同步响应报文获取第一发送时间、第一接收时间、第二发送时间和第二接收时间了。

本发明实施例中,预设同步算法为:

((t2-t1)+(t3-t4))/2(1)

其中,t1为第一发送时间,t2为第二接收时间,t3为第二发送时间,t4为第一接收时间。

本发明实施例中,sntp客户端从时间同步响应报文的originatetimestamp字段中获取t1、receivetimestamp字段中获取t2、transmittimestamp字段中获取t3和destinationtimestamp字段中获取t4。

s213、客户端获取第二接收时间和第一发送时间的第一时间差和第一接收时间和第二发送时间的第二时间差。

当客户端获取到第一发送时间、第一接收时间、第二发送时间和第二接收时间之后,客户端就要获取第二接收时间和第一发送时间的第一时间差、和第一接收时间和第二发送时间的第二时间差了。

本发明实施例中,第一时间差为t2-t1,第二时间差为t3-t4。

s214、客户端计算第一时间差和第二时间差的平均值。

当客户端获取到第一时间差和第二时间差之后,客户端就要计算第一时间差和第二时间差的平均值了。

本发明实施例中,sntp计算(t2-t1)+(t3-t4)/2,得到第一时间差和第二时间差的平均值。

s215、客户端将平均值确定为时间差值,以利用时间差值完成客户端和服务器之间的时间同步的过程。

当客户端计算出第一时间差和第二时间差的平均值之后,客户端就要将平均值确定为时间差值,并利用时间差值完成客户端和服务器之间的时间同步的过程了。

本发明实施例中,sntp客户端获取自身的本地时钟,并将本地时钟加上时间差值,即可与sntp服务器保持时间同步。

示例性的,如图7所示,在sntp客户端向sntp服务器发送同步请求时,记录第一发送时间t1;在sntp服务器接收到sntp客户端发送的同步请求时,记录第二接收时间t2;在sntp服务器响应同步请求时,记录第二发送时间t3;在sntp客户端接收到服务器发送的响应同步请求时,记录第一接收时间t4。

可以理解的是,当硬件电路检测到向服务器发送的时间同步请求报文时,硬件电路获取第一发送时间;当硬件电路检测到服务器发送的时间同步响应报文时,直接获取第一接收时间,使得客户端获取到的第一发送时间更接近真正的时间同步请求报文的发出时间、第一接收时间更接近真正的时间同步响应报文的接收时间,故,客户端利用第一发送时间和第一接收时间计算时间差值时,能够降低计算误差,进而提高客户端的对时精度。

实施例三

本发明实施例提供一种客户端1,所述客户端1与服务器2进行数据交互,如图8所示,该客户端1包括:

处理器10,所述处理器设置有第一通信接口100;

与所述处理器10通过所述第一通信接口100和第二通信接口110连接的硬件电路11,所述硬件电路11上设置有所述第二通信接口110和第三通信接口111,所述硬件电路11通过所述第三通信接口111与所述服务器2连接并进行数据交互;其中,

所述处理器10,用于当运行客户端程序得到时间同步请求报文时,将所述时间同步请求报文传输至所述硬件电路11;

所述硬件电路11,用于当将所述时间同步请求报文发送至所述服务器2时,获取第一发送时间;当从所述服务器2获取到响应所述时间同步请求报文的时间同步响应报文时,获取第一接收时间,并将所述第一发送时间和所述第一接收时间传输至所述处理器10;

所述处理器10,还用于利用所述第一发送时间、所述第一接收时间和预设同步算法,计算出所述客户端与所述服务器之间的时间差值;以利用所述时间差值完成所述客户端和所述服务器之间的时间同步的过程。

可选的,所述硬件电路11,具体用于将所述第一发送时间添加至所述时间同步请求报文中,并将所述时间同步请求报文发送至所述服务器2;

所述硬件电路11,具体用于将所述第一接收时间添加至所述时间同步响应报文,并将所述时间同步响应报文传输至所述处理器10,以将所述第一发送时间和所述第一接收时间传输至所述处理器10。

可选的,所述时间同步响应报文包括第二接收时间和第二发送时间,所述第二接收时间为所述服务器2接收到所述时间同步请求报文的时间;所述第二发送时间为所述服务器2发送所述时间同步请求报文的时间;

所述处理器10,具体用于利用所述第一发送时间、所述第一接收时间、所述第二发送时间、所述第二接收时间和所述预设同步算法,得到时间差值。

可选的,所述处理器10,具体用于分别获取所述第二接收时间和所述第一发送时间的第一时间差、所述第一接收时间和所述第二发送时间的第二时间差;计算出所述第一时间差和所述第二时间差的平均值,将所述平均值确定为所述时间差值。

可选的,所述硬件电路11,还用于将所述时间同步请求报文封装成第一报文帧,将所述第一报文帧发送至所述服务器2;从所述服务器2接收第二报文帧,并将所述第二报文帧解封成所述时间同步响应报文。

可选的,所述硬件电路11,具体用于当检测到所述第一报文帧的第一帧起始符时,获取所述第一发送时间;在所述第一报文帧添加所述第一发送时间;将所述第一报文帧发送至所述服务器;

所述硬件电路11,具体用于当检测到所述第二报文帧的第二帧起始符时,获取所述第一接收时间;将所述第一接收时间添加至所述第二报文帧中;

所述处理器10,还用于将所述第二报文帧解封成所述时间同步响应报文、从所述时间同步响应报文中获取所述第一发送时间、所述第一接收时间、所述第二发送时间和所述第二接收时间。

示例性的,如图9所示,sntp客户端内设置有cpu和fpga,其中cpu上设置有mac接口,fpga上设置有mac接口和以太网接口,cpu和fpga通过mac接口进行mac直连,sntp服务器上设置有以太网接口,sntp客户端通过fpga上的以太网接口和sntp服务器进行连接,并进行sntp对时报文的传输过程。

在实际应用中,上述处理器10可以为特定用途集成电路(asic,applicationspecificintegratedcircuit)、数字信号处理器(dsp,digitalsignalprocessor)、数字信号处理装置(dspd,digitalsignalprocessingdevice)、可编程逻辑装置(pld,programmablelogicdevice)、现场可编程门阵列(fpga,fieldprogrammablegatearray)、中央处理器(处理器,centralprocessingunit)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述第一处理器功能的电子器件还可以为其它,本发明实施例不作具体限定,该客户端1还包括存储器12,其中,存储器12用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器12可能包含高速ram存储器,也可能还包括非易失性存储器,例如,至少一个磁盘存储器。

在实际应用中,上述存储器12可以是易失性第一存储器(volatilememory),例如随机存取第二存储器(ram,random-accessmemory);或者非易失性第二存储器(non-volatilememory),例如只读第二存储器(rom,read-onlymemory),快闪第二存储器(flashmemory),硬盘(hdd,harddiskdrive)或固态硬盘(ssd,solid-statedrive);或者上述种类的第二存储器的组合,并向处理器10提供指令和数据。

另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,应用于客户端1中,该计算机程序被执行时实现如实施例一和实施例二所述的方法。

具体来讲,本实施例中的一种时间同步方法对应的程序指令可以被存储在光盘,硬盘,u盘等存储介质上,当存储介质中的与一种时间同步方法对应的计算机程序指令被一电子设备读取或被执行时,包括如下步骤:

利用客户端程序得到时间同步请求报文;

当通过所述硬件电路将所述时间同步请求报文发送至所述服务器时,利用所述硬件电路获取第一发送时间;

将所述第一发送时间添加至所述时间同步请求报文,以完成将所述时间同步请求报文发送至所述服务器的过程;

当通过所述硬件电路从所述服务器接收到时间同步响应报文时,利用所述硬件电路获取第一接收时间,所述时间同步响应报文为响应所述时间同步请求报文的报文;

根据所述第一发送时间、第一接收时间和预设同步算法,计算出所述客户端与所述服务器之间的时间差值,以利用所述时间差值完成所述客户端和所述服务器之间的时间同步的过程。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1