我有一个愚蠢的问题,希望您能帮我澄清一下。我对这类事情很陌生,所以如果我也没有使用正确的术语,我深表歉意。
我有两台独立的 Windows PC 通过网络相互连接。一种是服务器,一种是客户端。客户端在不同的时间点向服务器发送时间戳。我通过 Python 中的套接字编程建立了两者之间的通信,一切正常。
客户端将时间戳发送给服务器,服务器将时间戳发送回客户端。
我现在需要估计客户端和服务器之间的延迟(往返行程时间)和时钟偏移。但是我对如何做到最好感到非常困惑,我不确定我是否应该使用来自 time.time() 的时间戳或来自 datetime.utcnow() 的时间或来自 datetime.now() 的本地时间.
我在下面包含了我的代码,我现在基本上保存了所有内容(我跳过了套接字位)。但是我很困惑我应该使用哪个“时间”来计算 rt_delay 和 ClockOffs。请问您有什么建议吗?你认为这是正确的吗?
非常感谢!
import socket
import time
from datetime import datetime
#s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) [....]
# Sent timestamp to Client
SentTime0_UTC =datetime.utcnow()
SentTime0_local = datetime.now()
t0 = time.time()
message = str(("%.5f" % t0, str(SentTime0_UTC), str(SentTime0_local)))
s.sendto(message.encode('utf-8'), (Server_IP, Server_port[0])) # Send Message to Server
data, addr = s.recvfrom(1024) # Receive from Server
# Server replies with its one time.time(), datetime.utcnow(), datetime.now()
t2 = time.time() # Received timestamp Client
RecTime3_UTC =datetime.utcnow() # Received Date UTC
RecTime3_local = datetime.now() # Received Date Local
data = data.decode('utf-8')
splitdata = data.split(',')
t0 = splitdata[0].strip("('") # This is t0 - Client Sent Time
t1 = splitdata[3].strip("('") # This t1 - Server Received Time
ClientTimeDate_UTC = splitdata[4].strip("('") # This t1 - Server Received Time Date UTC
ClientTimeDate_Local = splitdata[5].strip("('") # This t1 - Server Received Time Date Local
rt_delay=(t2-t0) # Round Trip Delay
ClockOffs=( (t0-t1) - (t1-t2))/2 # Clock Offset