我一直在研究如何同步时钟系统。我不确定是否正确。为了以一种简单的方式揭示我的问题,我编写了一些代码。假设我想在控制台中打印“与某些通过套接字服务器连接到我的计算机的计算机同步的”消息。我的想法是这样的:
我计算机中的代码:
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库。我的问题是: 我实施此代码的方式,请确保所有计算机都将同时打印“某些东西,而与它们的系统时钟无关? 还有更好的建议吗? 预先感谢