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解析xml文件实例分享
Dec 04 Python
python实现向ppt文件里插入新幻灯片页面的方法
Apr 28 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
python3 对list中每个元素进行处理的方法
Jun 29 Python
python生成器与迭代器详解
Jan 01 Python
Python中Numpy mat的使用详解
May 24 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
python字典的值可以修改吗
Jun 29 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
JS继承用法实例分析
2015/02/05 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
跟老齐学Python之关于类的初步认识
2014/10/11 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Python实现的微信红包提醒功能示例
2019/08/22 Python
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
英国最受欢迎的母婴精品品牌:JoJo Maman BéBé
2021/02/17 全球购物
中科创达面试题
2016/12/28 面试题
幼儿园大班评语大全
2014/04/17 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
公务员个人年终总结
2015/02/12 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server