同步时钟以启动事件

时间:2019-01-20 14:38:54

标签: java time synchronization timespan

我一直在研究如何同步时钟系统。我不确定是否正确。为了以一种简单的方式揭示我的问题,我编写了一些代码。假设我想在控制台中打印“与某些通过套接字服务器连接到我的计算机的计算机同步的”消息。我的想法是这样的:

我计算机中的代码:

public static void SendMessage()throws Exception{
    String TIME_SERVER = "time-a.nist.gov";
    boolean state = true;
    NTPUDPClient timeClient = new NTPUDPClient();
    InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
    TimeInfo timeInfo = timeClient.getTime(inetAddress);
    timeInfo.computeDetails();
    long timeSpan = System.currentTimeMillis()+10000;//more 10s
    Date dateSpan = new Date(systemtime + timeInfo.getOffset());
    //then I send the dateSpan.getTime() via oscMessage for all computer
   while(state){
       long systemTime = System.currentTimeMillis();
       Date realdate = new Date(systemtime + timeInfo.getOffset());
       if(dateSpan.getTime()==realdate.getTime()) {
           System.out.println("Something");
           state = false;
       }
   }
}

///在计算机客户端中,代码或多或少是这样的:

public receiveMessage(long dateSpan)throws Exception{
    String TIME_SERVER = "time-a.nist.gov";
    boolean state = true;
    NTPUDPClient timeClient = new NTPUDPClient();
    InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
    TimeInfo timeInfo = timeClient.getTime(inetAddress);
    timeInfo.computeDetails();
    while(state){
        long systemtime = System.currentTimeMillis();
        Date realdate = new Date(systemtime + timeInfo.getOffset());
        if(dateSpan.getTime()==realdate.getTime()) {
            System.out.println("Something");
            state = false;
        }

    }
}

我省略了一些与如何发送oscMessage有关的代码,我基本上是在使用oscP5库。我的问题是: 我实施此代码的方式,请确保所有计算机都将同时打印“某些东西,而与它们的系统时钟无关? 还有更好的建议吗? 预先感谢

0 个答案:

没有答案
相关问题