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创建进程fork用法
Jun 04 Python
python实现用户答题功能
Jan 17 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Python中extend和append的区别讲解
Jan 24 Python
简单了解python协程的相关知识
Aug 31 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
Python tornado上传文件的功能
Mar 26 Python
Python实现简单的猜单词小游戏
Oct 28 Python
python numpy中setdiff1d的用法说明
Apr 22 Python
7个关于Python的经典基础案例
Nov 07 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开发过程中关于继承的使用方法分享
2011/06/17 PHP
PDO::getAttribute讲解
2019/01/28 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
web 屏蔽BackSpace键实例代码
2016/12/24 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
微信小程序实现蓝牙打印
2019/09/23 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Vue自定义指令结合阿里云OSS优化图片的实现方法
2019/11/12 Javascript
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python3使用PyQt5制作简单的画板/手写板实例
2017/10/19 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python里glob模块知识点总结
2021/01/05 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
金融行业务员的自我评价
2013/12/13 职场文书
理工科学生的自我评价
2013/12/15 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
结婚保证书
2015/01/16 职场文书
环保建议书作文400字
2015/09/14 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
AJAX实现省市县三级联动效果
2021/10/16 Javascript