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 条件判断的缩写方法
Sep 06 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python使用pymysql小技巧
Jun 04 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
Python的iOS自动化打包实例代码
Nov 22 Python
python抓取搜狗微信公众号文章
Apr 01 Python
python基于itchat模块实现微信防撤回
Apr 29 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
Python3远程监控程序的实现方法
Jul 15 Python
python实现桌面托盘气泡提示
Jul 29 Python
python列表切片和嵌套列表取值操作详解
Feb 27 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制作简单的内容采集器的原理分析
2008/10/01 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
详解Python中的文本处理
2015/04/11 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python中int与str互转方法
2018/07/02 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
大学生学习2014全国两会心得体会
2014/03/13 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
淘宝好评语句大全
2014/12/31 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
导游词之丹东鸭绿江
2019/10/24 职场文书
python+opencv实现目标跟踪过程
2022/06/21 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python