python腳本設(shè)置超時機制系統(tǒng)時間的方法
本文為大家介紹了python腳本設(shè)置系統(tǒng)時間的方法,一共有兩種,其一是調(diào)用socket直接發(fā)送udp包到國家授時中心,其二是調(diào)用ntplib包。我在本地電腦ping 國家授時中心地址cn.pool.ntp.org有時出現(xiàn)丟包,然而,二者都沒有檢查udp是否丟包的機制,方法一在udp丟包后一直處于阻塞狀態(tài)無法退出,方法二雖然會提示超時,但是不再做其它嘗試,比如重新發(fā)包,或者向同一個域名的不同IP地址發(fā)包。于是,嘗試在方法一的代碼基礎(chǔ)上,增加了超時機制,并且嘗試向同一個域名的不同IP地址發(fā)包。

具體修改后的完整代碼如下:
#-*- 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]
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
淺談Python3中datetime不同時區(qū)轉(zhuǎn)換介紹與踩坑
最近的項目需要根據(jù)用戶所屬時區(qū)制定一些特定策略,學(xué)習(xí)、應(yīng)用了若干python3的時區(qū)轉(zhuǎn)換相關(guān)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
Python入門教程(四十三)Python的NumPy數(shù)據(jù)類型
這篇文章主要介紹了Python入門教程(四十二)Python的NumPy數(shù)組裁切,NumPy有一些額外的數(shù)據(jù)類型,并通過一個字符引用數(shù)據(jù)類型,例如 i 代表整數(shù),u 代表無符號整數(shù)等,需要的朋友可以參考下2023-05-05
Django框架基礎(chǔ)認證模塊auth應(yīng)用示例
這篇文章主要為大家介紹了Django框架認證模塊auth示例應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-03-03
python實現(xiàn)批量處理將圖片粘貼到另一張圖片上并保存
今天小編就為大家分享一篇python實現(xiàn)批量處理將圖片粘貼到另一張圖片上并保存,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python?pyinstaller打包exe最新完整圖文教程
pyinstaller是一個非常簡單的打包python的py文件的庫,下面這篇文章主要給大家介紹了關(guān)于Python?pyinstaller打包exe的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下2023-12-12

