windows搭建ntp时间服务器

参加文献

注意事项

  1. 执行net stop w32time && net start w32time报错
    错误描述:"时间服务器未启动"
    解决方案:直接执行net start w32time

  2. 执行 net start w32time 报错
    错误描述:"发生系统错误 5 拒绝访问"
    解决方案:以管理员权限运行。【开始】--->搜索"cmd"--->右键“以管理员身份运行”,或者使用快捷键【win+x+a】

java获取NTP服务器时间,修改系统时间

  1. 依赖
<dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.3</version>
</dependency>
  1. 代码
    注意
    a: 建议启动一个新线程去执行,因为有可能会阻塞;
    b: ubuntu上测试,需要用sudo权限启动程序,因为执行date -s命令需要sudo权限才能生效;
private class LocalNtpTask implements Runnable {
        private Ntp ntp;

        public LocalNtpTask(Ntp ntp) {
            this.ntp = ntp;
        }

        @Override
        public void run() {
            try {
                log.info("local ntp start");
                DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                NTPUDPClient timeClient = new NTPUDPClient();
                String timeServerUrl = ntp.getUnicastConfigurationList().get(0).getAddress().toString();
                InetAddress timeServerAddress = InetAddress.getByName(timeServerUrl);
                log.info("local ntp timeServerAddress {}", timeServerAddress);
                TimeInfo timeInfo = timeClient.getTime(timeServerAddress);
                TimeStamp timeStamp = timeInfo.getMessage().getTransmitTimeStamp();
                String timeString = dateFormat.format(timeStamp.getDate());
                log.info("local ntp time {}", timeString);
                String date = timeString.substring(0, 10);
                String time = timeString.substring(11);
                Process process1 = Runtime.getRuntime().exec(" date -s " + date); //修改服务器年月日
                Process process2 = Runtime.getRuntime().exec(" date -s " + time); //修改服务器时分秒
            } catch (Exception e) {
                log.error("local ntp error", e);
            }
        }
    }

转载于:https://my.oschina.net/Cubicluo/blog/3031887

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值