在一个局域网中,许多系统都要求每台计算机能够保持时间的一致性,WIN2000系统提供了与主域服务器时间同步功能,即工作站只要登录到主域服务器,工作站系统的时间自动与主域服务器时间一致,但接下来的问题是我们如何使主域服务器的时间同步世界标准时间。如要获得世界标准时间,比较精确的做法是使用GPS卫星时钟获得毫秒级精度的标准时间,但这是要money的哦。如果我们在时间精度上只需要秒级的,又能够连接到Internet,则我们可以利用Internet上的标准时间服务器获得标准时间。 事实上在Internet上有三个不同的时间服务,每一个都由Request forComment(RFC)定义为Internet日期时间标准。这三个标准分别为:RFC-867、RFC-868和RFC-1305。下面就先介绍RFC-867: RFC867 Daytime协议(RFC867 Daytime Protocol) 本RFC规范了一个ARPA Internet community上的标准。在ARPAInternet上的所有主机应当采用和实现这个标准。 一个有用的测量和调试工具就是daytime服务。它的作用就是返回当前时间和日期,格式是字符串格式。 * 基于TCP的daytime服务 daytime服务是基于TCP的应用,服务器在TCP端口13侦听,一旦有连接建立就返回ASCII形式的日期和时间(接收到的任何数据被忽略),在传送完后关闭连接。 * 基于UDP的daytime服务 daytime服务也可以使用UDP协议,它的端口也是13,不过UDP是用数据报传送当前时间的。接收到的数据被忽略。 * Daytime格式 对于daytime没有特定的格式,建议使用ASCII可打 印字符,空格和回车换行符。daytime应该在一行上。 下面是两种流行的格式: 一种流行的格式是:Weekday, Month Day, Year Time-Zone 例子:Tuesday, February 22, 1982 17:37:43-PST 另一种流行的格式用于SMTP中:dd mmm yy hh:mm:ss zzz 例子:02 FEB 82 07:59:01 PST 注意:对于机器来说,有用的时间采用了时间协议(Time Protocol RFC-868) 接下来我们用VB程序实现通过RFC867协议设置我们自己的计算机系统时间,为使程序简化,程序未进行日期校正,只进行时间校正。在FORM1中添加1个Winsock控件,将下面代码剪贴到FORM1的代码窗体中即可: Option Explicit '采用RFC867 Daytime协议获取标准时间例程 'www.time.ac.cn为中科院国家授时中心,采用北京时间 '时间格式:Mon Jul 26 09:58:57 2004 'time.nist.gov为美国标准技术院,采用格灵威时间 '时间格式:53212 04-07-26 02:00:12 50 0 0 488.3 UTC(NIST) * Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds AsLong) Dim NoSrv As Boolean Dim TimeFromNet Private Sub Form_Load() Winsock1.Protocol = sckTCPProtocol '采用TCP协议 NetTime "www.time.ac.cn" '首先取中科院国家授时中心时间 If NoSrv Or TimeFromNet = "" Then '若未取到中科院国家授时中心时间,则取美国标准技术院时间 NetTime "time.nist.gov" If NoSrv Or TimeFromNet = "" Then '若不能取美国标准技术院时间,则报错 MsgBox "检测不到网络标准时间服务器time.nist.gov!" Else '为使网络传输误差减小,第2次再取美国标准技术院时间 NetTime "time.nist.gov" If TimeFromNet = "" Then MsgBox "网络标准时间服务器time.nist.gov超时!" Else TimeFromNet = Mid(TimeFromNet, 17, 8) TimeFromNet = TimeSerial((Hour(TimeFromNet) + 8) Mod 24,Minute(TimeFromNet), Second(TimeFromNet)) Time = TimeFromNet '设置系统时间 End If End If Else '为使网络传输误差减小,第2次再取中科院国家授时中心时间 NetTime "www.time.ac.cn" If TimeFromNet = "" Then MsgBox "网络标准时间服务器www.time.ac.cn超时!" Else Time = Mid(TimeFromNet, 12, 8) '设置系统时间 End If End If End End Sub '关闭Winsock子程序 Private Sub Winsock1_Close() If Winsock1.State <> sckClosedThen Winsock1.Close End If End Sub 'Winsock接收数据事件 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) TimeFromNet = String(bytesTotal, " ") Winsock1.GetData TimeFromNet, vbString, bytesTotal End Sub 'Winsock出错事件 Private Sub Winsock1_Error(ByVal Number As Integer, Description AsString, ByVal Scode As Long, ByVal Source As String, ByVal HelpFileAs String, ByVal HelpContext As Long, CancelDisplay AsBoolean) NoSrv = True End Sub '从互联网上标准时间提供网站获取标准时间 Private Sub NetTime(TimeSrv As String) NoSrv = False TimeFromNet = "" If Winsock1.State <> sckClosed ThenWinsock1.Close Winsock1.RemoteHost = TimeSrv ' "www.time.ac.cn" 或 "time.nist.gov" Winsock1.RemotePort = 13 Winsock1.LocalPort = 0 Winsock1.Connect Do While TimeFromNet = "" '循环等待标准时间网站返回时间数据 If NoSrv Then Exit Do '若Winsock出错,则跳出循环等待 Sleep 55 DoEvents Loop If Winsock1.State <> sckClosed ThenWinsock1.Close End Sub |
通过Internet获得标准时间 internet时间同步出错
更多阅读
LOL召唤师隐藏头像解锁方法:1 通过任务获得
LOL召唤师隐藏头像解锁方法:[1]通过任务获得——简介LOL召唤师怎么自定义?当我们看到别人玩家使用与众不同的召唤师头像时,是不是由内心发出一丝羡慕。其实我们所看到的召唤师头像并不是全部,更好更个性的召唤师图标被隐藏起来啦。对此
让网络时间同步电脑时间方法 电脑如何同步网络时间
当您的电脑时间不准确时,你又不想每次都通过手动来更新电脑时间,这时我们可以设置通过网络来自动让电脑更新时间。1: 用鼠标单击电脑右下角时间显示处2:选择“更改日期和时间设置”.3:选择“Internet时间”4:单击“更改设置”让
如何使电脑时间与中国国家授时中心的标准时间自动校准 国家授时中心时间接口
中国国家授时中心的时间服务器IP地址!(210.72.145.44)大家都知道计算机电脑的时间是由一块电池供电保持的,而且准确度比较差经常出现走时不准的时候。通过互联网络上发布的一些公用网络时间服务器NTPserver,就可以实现自动、定期的同步
电脑时间同步出错/电脑时间不能同步 电脑系统时间同步出错
我们都知道,Windows xp系统的时间经常会不准,于是通过进入“日期和时间”对话框,切换到“Internet时间”选项卡下,通过时间同步服务器调整,可直接进行同步往往会出现连接不上,而且时间还会差一秒的情况。如何来解决电脑时间同步出错或电脑
更改Windows系统时间同步频率 windows系统字体更改
Windows系统默认的时间同步间隔是7天,不能自由选择。其实,我们也可以通过修改注册表来手动修改它的自动同步间隔以提高同步精度,以下以XP系统为例:1.在“开始”菜单→“运行”项下输入“Regedit”进入注册表编辑器2.展开 [HKEY