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实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
Python TestCase中的断言方法介绍
May 02 Python
Python 实现数据结构中的的栈队列
May 16 Python
使用python爬取抖音视频列表信息
Jul 15 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
关于Python 中的时间处理包datetime和arrow的方法详解
Mar 19 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 Python
想学画画?python满足你!
Dec 24 Python
Python中tkinter的用户登录管理的实现
Apr 22 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
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
dess中一个简单的多路委托的实现
2010/07/20 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
浅析JS动态创建元素【两种方法】
2016/04/20 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
原生JS 购物车及购物页面的cookie使用方法
2017/08/21 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
Vue $attrs &amp; inheritAttr实现button禁用效果案例
2020/12/07 Vue.js
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python复制文件的方法实例详解
2015/05/22 Python
Python检测生僻字的实现方法
2016/10/23 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
Python多继承原理与用法示例
2018/08/23 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
北大自主招生自荐信
2013/10/19 职场文书
毕业证丢失证明
2014/01/15 职场文书
本科毕业生自荐信
2014/06/02 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
社区六一儿童节活动总结
2015/02/11 职场文书
诚实守信主题班会
2015/08/13 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
会议承办单位欢迎词
2019/07/09 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
如何利用python实现Simhash算法
2022/06/28 Python