-- TOC --
这是一段可能会比较有用的代码,python实现的sntp,可以通过网络查询NTP服务器的时间。
$ cat sntp.py
import time
import socket
import struct
def sntp_client(server):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.settimeout(2)
msg = b'\x1b' + b'\x00'*47
s.sendto(msg, (server, 123))
rcv, addr = s.recvfrom(1024)
if rcv:
print('response received from', addr)
t = struct.unpack('!12I', rcv)[10]
return t - 2208988800 # TIME1970
print(time.ctime(sntp_client('time.pool.aliyun.com')))
运行效果:
$ python3 sntp.py
response received from ('182.92.12.11', 123)
Fri Mar 18 09:13:14 2022
$ python3 sntp.py
response received from ('182.92.12.11', 123)
Fri Mar 18 09:13:15 2022
$ python3 sntp.py
response received from ('182.92.12.11', 123)
Fri Mar 18 09:13:16 2022
注意:
*
的方式来实现复制;这段代码有可能在recvfrom的地方阻塞超时,很可能是server没有响应,网络上有很多ntp server可以使用,可自行搜索。
本文链接:https://cs.pynote.net/net/202203181/
-- EOF --
-- MORE --