一个 Windows 对时小工具
浏览:1288次 出处信息
由于在 CERNET 内,我经常需要用代理上网,没办法直连到 NTP 服务器,因此不能使用 Windows 时间服务对时。偶尔维修电脑或者不小心调整错时间,再加上电脑时钟本身就有一定的漂移,对时就变成了件麻烦的事情。
手动调时也没个参照,误差往往比较大。IPv6 网络上存在一些 NTP 服务器,Linux 下有 ntpdate 是支持 IPv6 NTP 服务器的,但是我搜索了半天,才在一篇文章上看到有人评论说 Windows 下只有一款 NTP 客户端支持 IPv6,还是收费软件――可他也没给出名字。
无奈之下想到 Python 的 httplib 是支持 IPv6 连接的,于是我就仿照 htpdate 写了一个利用 Google 的 IPv6 Web 服务器进行对时的 Python 小工具 htpdate.py。虽然误差比 NTP 大不少,但是还是在可接受范围内(不到 1 秒),而且比较方便,连日期也一块更新了。下面是代码,比较粗糙。
以下是代码片段:
#!/usr/bin/env python
import httplib, time
from os import system
def main():
conn = httplib.HTTPConnection(’google.com’)
time.clock()
conn.request(’HEAD’, ’’)
t_rtt = time.clock()
res_time = conn.getresponse().getheader(’date’)
t = time.localtime(time.mktime(time.strptime(res_time,
’%a, %d %b %Y %H:%M:%S %Z’)) - time.timezone)
time_str = time.strftime(’%H:%M:%S’, t)
local_time = time.asctime()
t_exe = time.clock()
centi_sec = (t_exe - t_rtt/2)*100
if centi_sec > 99:
centi_sec = 99
system(’time %s.%2.0f’ % (time_str, centi_sec))
date_str = time.strftime(’%Y-%m-%d’, t)
system(’date %s’ % date_str)
print ’LOCAL TIME: ’ + local_time
print ’SERVER TIME: ’ + time.asctime(t)
print ’LOCAL TIME: ’ + time.asctime()
if (t_exe - t_rtt/2) >= 1:
print ’Round trip time is too long. Time error might be larger than 1 sec.’
if __name__ == ’__main__’:
main()
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:浏览器缓存机制 >>
文章信息
- 作者:Solrex Yang 来源: Solrex Shuffling
- 标签: 对时
- 发布时间:2010-03-07 23:34:02
近3天十大热文
- [69] Twitter/微博客的学习摘要
- [65] find命令的一点注意事项
- [64] IOS安全–浅谈关于IOS加固的几种方法
- [62] Go Reflect 性能
- [62] android 开发入门
- [61] 如何拿下简短的域名
- [61] 流程管理与用户研究
- [60] Oracle MTS模式下 进程地址与会话信
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则