python脚本设置超时机制系统时间的方法


Posted in Python onFebruary 21, 2016

本文为大家介绍了python脚本设置系统时间的方法,一共有两种,其一是调用socket直接发送udp包到国家授时中心,其二是调用ntplib包。我在本地电脑ping 国家授时中心地址cn.pool.ntp.org有时出现丢包,然而,二者都没有检查udp是否丢包的机制,方法一在udp丢包后一直处于阻塞状态无法退出,方法二虽然会提示超时,但是不再做其它尝试,比如重新发包,或者向同一个域名的不同IP地址发包。于是,尝试在方法一的代码基础上,增加了超时机制,并且尝试向同一个域名的不同IP地址发包。

python脚本设置超时机制系统时间的方法

具体修改后的完整代码如下:

#-*- coding:utf-8 -*-

import socket
import struct
import time
import win32api
import os
import re


def getTime(TimeServerAddresses):
  TIME_1970 = 2208988800L
  client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  client.settimeout(3)
  data = '\x1b' + 47 * '\0'
  #TimeServer_ip=socket.gethostbyname('cn.pool.ntp.org')
  #TimeServer_ip='202.118.1.130'
  Port=123
  for address in TimeServerAddresses:
    success=False
    count=0
    while not success and count<3:
      print address,count
      try:
        client.sendto(data, (address, Port))
        data, address = client.recvfrom(1024)
        success=True
      except socket.timeout:
        print 'Request timed out!'
        count=count+1
    if success==True:a
      break
  data_result = struct.unpack('!12I', data)[10]
  data_result -= TIME_1970
  return data_result

def setSystemTime(now_time):
  tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst = time.gmtime(now_time)
  win32api.SetSystemTime(tm_year, tm_mon, tm_wday, tm_mday, tm_hour, tm_min, tm_sec, 0)
  print "Set System OK!"

def getServerIP():
  res1=os.popen('nslookup cn.pool.ntp.org')
  result1=res1.read()
  addresses=result1.split('\n\n')[1].split('\n')[1][12:].split(',')
  return addresses
  #for address in addresses:
  #  res=os.popen('ping -n 2 '+address)
  #  result=res.read()
  #  received_num=int(re.findall('Received = [0-9]',result)[0].split('=')[1])
  #  if received_num > 1:
  #    break
  #TimeServer=address


if __name__ == '__main__':
  addresses=getServerIP()
  now_time=getTime(addresses)
  setSystemTime(now_time)
  print "%d-%d-%d %d:%d:%d" % time.localtime(now_time)[:6]

以上就是本文的全部内容,希望对大家的学习有所帮助。

Python 相关文章推荐
跟老齐学Python之总结参数的传递
Oct 10 Python
Python获取DLL和EXE文件版本号的方法
Mar 10 Python
Python字符串切片操作知识详解
Mar 28 Python
python中模块的__all__属性详解
Oct 26 Python
Python绘制热力图示例
Sep 27 Python
解决Numpy中sum函数求和结果维度的问题
Dec 06 Python
Django-xadmin+rule对象级权限的实现方式
Mar 30 Python
python多进程使用函数封装实例
May 02 Python
Python 忽略文件名编码的方法
Aug 01 Python
Python类class参数self原理解析
Nov 19 Python
python的dict判断key是否存在的方法
Dec 09 Python
Python Django搭建文件下载服务器的实现
May 10 Python
Go语言基于Socket编写服务器端与客户端通信的实例
Feb 19 #Python
使用C#配合ArcGIS Engine进行地理信息系统开发
Feb 19 #Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 #Python
Python实现以时间换空间的缓存替换算法
Feb 19 #Python
Python使用爬虫猜密码
Feb 19 #Python
使用Python简单的实现树莓派的WEB控制
Feb 18 #Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 #Python
You might like
Oracle 常见问题解答
2006/10/09 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python实现数组插入新元素的方法
2015/05/22 Python
python获取服务器响应cookie的实例
2018/12/28 Python
代码详解django中数据库设置
2019/01/28 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
MxNet预训练模型到Pytorch模型的转换方式
2020/05/25 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
澳大利亚100%丝绸多彩度假装商店:TheSwankStore
2019/09/04 全球购物
this关键字的含义
2015/04/08 面试题
MYSQL支持事务吗
2013/08/09 面试题
五年级音乐教学反思
2014/02/06 职场文书
商场主管竞聘书
2014/03/31 职场文书
自我工作评价范文
2015/03/06 职场文书
Python入门之基础语法详解
2021/05/11 Python