我試圖讓服務器在外面的時間。如何獲取服務器的時間(包括毫秒或(1/100秒))?
首先,我試過了:
string URL = "http://google.com";
System.Net.HttpWebRequest rq2 = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(URL);
System.Net.HttpWebResponse res2 = (System.Net.HttpWebResponse)rq2.GetResponse();
DateTime xd = rq2.Date;
但這是緩慢的,並且不包含毫秒。
然後我發現,我實際上可以從目標服務器使用的ntp服務器獲取服務器的時間。
InternetTime.SNTPClient sntp = new InternetTime.SNTPClient("time-b.timefreq.bldrdoc.gov");
sntp.Connect(false); // true to update local client clock
DateTime dt = sntp.DestinationTimestamp.AddMilliseconds(sntp.LocalClockOffset);
string timeStampNow = dt.ToString("dd/MM/yyyy HH:mm:ss.fff");
它工作得很好,不過,我不知道我的目標服務器是否使用NTP服務器,如果是的話,我不知道如何找到它。我花了很多時間研究,所以我決定在這裏問問。
edit2:我沒有任何訪問該服務器(除了訪問它的WWW頁面),我知道,服務器正在使用微軟IIS/7.5網絡服務器。
究竟是什麼意思?當你得到它的時候將會(有點)陳舊。 – 2013-03-01 19:17:32
嗯,我可以計算延遲,所以我有時間類似於原始 – Patryk 2013-03-01 19:22:41
不,你不能計算延遲。因爲在請求處理期間您不知道何時檢索到時間值。即使你這樣做了,你也無法可靠地確定服務器的響應需要多長時間。 – 2013-03-01 19:33:32