国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python腳本設(shè)置超時(shí)機(jī)制系統(tǒng)時(shí)間的方法

2019-11-25 16:55:32
字體:
供稿:網(wǎng)友

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

具體修改后的完整代碼如下:

#-*- coding:utf-8 -*-import socketimport structimport timeimport win32apiimport osimport redef 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_resultdef 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=addressif __name__ == '__main__':  addresses=getServerIP()  now_time=getTime(addresses)  setSystemTime(now_time)  print "%d-%d-%d %d:%d:%d" % time.localtime(now_time)[:6]

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 梧州市| 泉州市| 石林| 武城县| 顺平县| 壶关县| 四子王旗| 江华| 珠海市| 农安县| 周至县| 天峨县| 兴仁县| 汕头市| 兰考县| 江都市| 曲沃县| 淮安市| 巴彦淖尔市| 三原县| 罗山县| 阿鲁科尔沁旗| 彝良县| 昆山市| 通辽市| 无为县| 淳化县| 宜黄县| 东平县| 钟祥市| 道孚县| 新化县| 株洲县| 共和县| 龙岩市| 建平县| 镇康县| 贡嘎县| 肇源县| 金昌市| 鄂托克前旗|