【问题标题】:Get system time from a remote pc从远程电脑获取系统时间
【发布时间】:2019-09-11 08:02:40
【问题描述】:

有没有办法在java中从远程PC获取系统时间? 远程 PC 与客户端 PC 位于同一网络中。

有些客户端带有 java gui。 gui 应该在远程 PC 上登录相同的文件。为此,我使用了 slf4j api 的 RollingFileAppender。 但我想,日志时间是服务器时间。 客户可以有不同的时间,他们无权更改时钟。
所以我的想法是获取远程PC服务器时间,获取时差并记录服务器时间。
但我找不到类似的东西。
客户端和服务器没有互联网连接。 而且我不想在服务器上更改某些内容。只有在没有其他办法的情况下。
gui 使用 java 1.6 运行。

我知道 TCP 连接有一些方法。但为此我必须编写并执行服务器程序或安装 NTP 服务器。

您对解决我的问题有什么建议或想法吗?

【问题讨论】:

  • 这显然需要服务器PC提供一个接口来获取它的时间(或者可能是一个用服务器PC的当前时间记录消息的接口)。
  • 目前我使用批处理脚本搜索解决方案。 “网络时间”确实有效,但日期和时间未格式化。因此,如果客户端 PC 有不同的位置,它就不起作用。

标签: java slf4j systemtime


【解决方案1】:

我找到了解决问题的方法。
我在 Windows 上激活了 ntp 服务器。
在 gui 启动时,我得到了从远程 pc 到客户端的时间差。

NTPUDPClient client = new NTPUDPClient();
client.setDefaultTimeout(5000);
client.open();
InetAddress hostAddr = InetAddress.getByName(confFile.getIpAddresse());
TimeInfo info = client.getTime(hostAddr, 8110);
info.computeDetails(); // compute offset/delay if not already done
Long offsetValue = info.getOffset();
Long delayValue = info.getDelay();
String delay = (delayValue == null) ? "0" : delayValue.toString();
String offset = (offsetValue == null) ? "0" : offsetValue.toString();
System.out.println(" Roundtrip delay(ms)=" + delay + ", clock offset(ms)=" + offset); 
// offset in ms
client.close();
StaticVariables.timeDifference = Long.parseLong(offset);  

为了修改 log4j 日志记录的时间戳,我创建了一个自定义 RollingFileAppender:

public class CustomRollingFileAppender extends RollingFileAppender
{
    @Override
    protected void subAppend(LoggingEvent event)
    {
        LoggingEvent modifiedEvent = new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(),
                event.getTimeStamp() + StaticVariables.timeDifference, event.getLevel(), event.getMessage(), event.getThreadName(),
                event.getThrowableInformation(), event.getNDC(), event.getLocationInformation(), event.getProperties());

        super.subAppend(modifiedEvent);
    }
}

在这个附加程序中,我添加了时差event.getTimeStamp() + StaticVariables.timeDifference

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多