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实现的数据结构与算法之快速排序详解
Apr 22 Python
在Python下进行UDP网络编程的教程
Apr 29 Python
详解Python中time()方法的使用的教程
May 22 Python
Python实现将doc转化pdf格式文档的方法
Jan 19 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python3 导入上级目录中的模块实例
Feb 16 Python
使用Python实现企业微信的自动打卡功能
Apr 30 Python
对python 中class与变量的使用方法详解
Jun 26 Python
python向图片里添加文字
Nov 26 Python
python实现发送带附件的邮件代码分享
Sep 22 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
python垃圾回收机制原理分析
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
example1.php
2006/10/09 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
php 获取本地IP代码
2013/06/23 PHP
js代码实现微博导航栏
2015/07/30 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
转换字符串为json对象的方法详解
2013/11/29 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
使用Python生成url短链接的方法
2015/05/04 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python输出电脑上所有的串口名的方法
2019/07/02 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
春节请假条
2014/04/11 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL