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 相关文章推荐
用pywin32实现windows模拟鼠标及键盘动作
Apr 22 Python
用Python中的wxPython实现最基本的浏览器功能
Apr 14 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
python爬虫_自动获取seebug的poc实例
Aug 05 Python
Python 多进程并发操作中进程池Pool的实例
Nov 01 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
python3实现弹弹球小游戏
Nov 25 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
Feb 27 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 Python
Python之matplotlib绘制折线图
Apr 13 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
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
JavaScript生成随机字符串的方法
2015/03/19 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
Node.js的Mongodb使用实例
2016/12/30 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
学习 Vue.js 遇到的那些坑
2021/02/02 Vue.js
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
Python实现简单的用户交互方法详解
2018/09/25 Python
python pandas 时间日期的处理实现
2019/07/30 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
在python3中实现查找数组中最接近与某值的元素操作
2020/02/29 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
opencv 图像腐蚀和图像膨胀的实现
2020/07/07 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python如何实现机器人聊天
2020/09/10 Python
AJAX的优缺点都有什么
2015/08/18 面试题
个人近期表现材料
2014/02/11 职场文书
酒后驾车标语
2014/06/30 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
繁星春水读书笔记
2015/06/30 职场文书
教师远程培训心得体会
2016/01/09 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
DE1103使用报告
2022/04/05 无线电