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命令行参数解析OptionParser类用法实例
Oct 09 Python
Python网站验证码识别
Jan 25 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
13个最常用的Python深度学习库介绍
Oct 28 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
编写python代码实现简单抽奖器
Oct 20 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
Angular 4依赖注入学习教程之简介(一)
2017/06/04 Javascript
vue增删改查的简单操作
2017/07/15 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python拼接字符串的7种方法总结
2018/11/01 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Python小程序之在图片上加入数字的代码
2019/11/26 Python
python opencv如何实现图片绘制
2020/01/19 Python
python定时截屏实现
2020/11/02 Python
奥斯汀独木舟和皮划艇:Austin Canoe & Kayak
2018/05/22 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
大学生简短的自我评价分享
2014/02/20 职场文书
办公室主任职责范本
2014/03/07 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书