我正在尝试使用服务器同步计算机时钟。我四处搜寻,发现“ NTPClient”可用于此目的。
我的目标是将计算机时间与以下时间服务器同步:
time.nist.gov
下面是我可以使用的库和代码的链接:
获取NTPClient.cs文件的来源
https://www.codeproject.com/Articles/1005/SNTP-Client-in-C
以下代码的来源
https://www.codeguru.com/csharp/csharp/cs_date_time/timeroutines/article.php/c4207/C-SNTP-Client.htm
我认为但不确定重要的内容是:
client.Connect(true);
像智商所说的,“ true”对“ UpdateSystemTime”意味着,但是那没有发生,所以我相信我不确定如何做到这一点?
void synccomputerTime()
{
//https://www.codeproject.com/Articles/1005/SNTP-Client-in-C (Source to get NTPClient.cs file)
//https://www.codeguru.com/csharp/csharp/cs_date_time/timeroutines/article.php/c4207/C-SNTP-Client.htm (Source of below code)
NTPClient client;
try
{
client = new NTPClient("time.nist.gov");
client.Connect(true); //true should UpdateSystemTime but doesn't do that?
}
catch (Exception e)
{
MessageBox.Show("ERROR: {0}", e.Message);
return;
}
MessageBox.Show(client.ToString());
}
............................................... .......
我也曾尝试过没有运气的此类:
SNTPClient.cs
https://github.com/ramonsmits/InternetTime/blob/master/SNTPClient.cs
在这里,我还将这一行设置为true,因为它应该更新计算机时钟,但不会这样做:
sntp.Connect(true); //更新本地客户端时钟为true
void synccomputerTime2()
{
//https://github.com/ramonsmits/InternetTime/blob/master/SNTPClient.cs
InternetTime.SNTPClient sntp = new InternetTime.SNTPClient("ntp1.ja.net");
sntp.Connect(true); // true to update local client clock
DateTime dt = sntp.DestinationTimestamp.AddMilliseconds(sntp.LocalClockOffset);
string timeStampNow = dt.ToString("dd/MM/yyyy HH:mm:ss.fff");
MessageBox.Show(timeStampNow);
}
答案 0 :(得分:0)
Windows已经内置了一个NTP客户端(W32Time
)。只需从管理员命令提示符处执行此操作:
net time /setsntp:time.nist.gov
如果您在加入Active Directory域的企业网络中,则默认情况下,您的计算机已经与域控制器同步了时间,并且您不想更改此时间。