2009-09-17 11:52:31
专业的网络对时软件大多采用NTP协议来获取专业时间服务器时间对时,也有采用SNTP协议的,本来也想做个SNTP或NTP协议的对时工具自己用,虽然我手上也有好几个采用NTP协议对时的软件,但是使用过程中发现通过网通的网络上网的话,这些软件全部都无法接收到时间服务器返回的,原先不了解NTP协议的时候以为是程序本身有什么问题,因为通过电信的网络上网的话一切正常,而我的网通网络都是通过路由器分支出来多台共享上网的。等到想自己做个玩玩的时候,研究了一下NTP协议才知道,原来大多NTP协议对时软件都是采用UDP作为网络通讯协议,而UDP数据包无法通过我网通的路由器返回到运行对时软件的电脑上,造成了对时软件总是报无法进行网络通讯的错误,原以为是那些软件设计上有什么问题,就自己写了一个SNTP协议UDP通讯的对时工具测试了一下,发现还是一样的故障,服务器的UDP时间数据包根本无法传输到提出请求的客户端,而用电信的网络就一切正常,最终只好放弃采用UDP通讯协议的对时方式。因为原来想自己制作对时工具的动机就是家里通过网通网络上网的电脑无法使用那些NTP协议对时软件对时,后来在国家授时中心网站逛了几圈,放弃了国家授时中心服务器提供的SNTP时间服务器对时的方法,想起来几年前国家授时中心出过一个“时间精灵”,但是当时下载了安装包安装后,无法打开时间精灵的ActiveX对时控件,这次又重新下载“时间精灵”安装包安装后还是一样的问题,在时间精灵网页无法打开时间精灵的控件,无奈之下分析了一下时间精灵的安装包,发现里面的核心对时控件是一个叫“client.ocx”的东东,打开看了一下发现是用VB6写的,于是就用VB6将“client.ocx”控件包装了一下,这回终于可以做成个独立的程序正常运行了,拿到家里的网通网络试用了一下,发现可以正常对时,本以为就此了事了,终于可以正常对时了,但是好景不长,那个client.ocx运行了一阵后就报13号错误终止运行了,想使用定时对时的想法再次泡汤了,这个错误应该是当时client.ocx的开发人员开发的太仓促,错误处理没有做好的原因了。再次无奈之余,想到client.ocx是采用VB6开发的,而且client.ocx能在网通网络下正常对时,可见client.ocx肯定不是使用NTP协议进行对时的,用二进制编辑器打开client.ocx分析了一下,发现它里面有个网址:http://www.time.ac.cn/times/timefairy.aspx,用通讯拦截程序看了一下client.ocx的通讯数据,发现它只是直接调用http://www.time.ac.cn/times/timefairy.aspx的返回数据,打开http://www.time.ac.cn/times/timefairy.aspx一看,是一串乱码,刷新几次后,发现还在变化,猜想肯定是一串时间日期数据的编码,也就是说只要对这串乱码进行解码后应该就是正确的时间数据了,就可以用来对时了,而且这个是Http协议的,不受什么网关的影响,只要能打开网页就能对时。研究了几天终于成功破解这串乱码,做成了这个对时工具,发出来给需要的朋友分享下。
下载地址:http://www.rayfile.com/files/37d23fba-a349-11de-b997-0014221f469f/
本站免费下载:http://download.csdn.net/detail/jessezappy/7428971