Instant.now() 在虚拟机中的不同结果

Eri*_*ard 0 java sockets linux client server

我正在尝试测量套接字连接的 ping 值。

像这样;

服务器:向客户端发送 ping

客户端:接收 ping 并将当前时间编码为响应

服务器:解码响应并计算 ping = 当前时间 - 响应时间

理论上,这应该告诉我一个相当准确的数据从客户端传输到服务器所需的时间量。

问题是发送 ping 时客户端(Linux VM)的编码时间(毫秒)比服务器上缓存的时间早约 4 秒。

看起来 Instant.now() 在不同的机器上返回不一致的结果。

我通过简单地输出 Instant.now().toEpochMilli() 确认了这一点

“同时”运行两个测试,虚拟机上的时间晚了几秒?这里发生了什么?

小智 6

VM默认占用服务器时间。因此,您需要检查服务器上设置的时间。

基本上服务器和客户端是两台不同的机器。这两台机器的时间不同步。您需要检查机器时间并纠正不正确的地方。 这与Java无关。