コード例 #1
0
        private async void getCentralTime()
        {
            //Get the Real Time, only try three times
            for (int i = 0; i < 3; ++i)
            {
                try
                {
                    while (true)
                    {
                        var client      = new Yort.Ntp.NtpClient();
                        var currentTime = await client.RequestTimeAsync();

                        if (currentTime != null)
                        {
                            Debug.WriteLine(currentTime);
                            deviceStartTime = DateTime.UtcNow;
                            realStartTime   = (DateTime)currentTime;
                            break;
                        }
                    }
                    Debug.WriteLine("Try to get NTP time succeed");
                    break;
                }
                catch
                {
                    Debug.WriteLine("Try to get NTP time failed.");
                }
            }
        }
コード例 #2
0
        public void NtpClient_DefaultServer_GetsValidResponsesOverMultipleRequests()
        {
            var ntpEpoch = new DateTime(1900, 01, 01, 0, 0, 0, DateTimeKind.Utc);

            _GotResultSignal = new System.Threading.AutoResetEvent(false);
            var client = new Yort.Ntp.NtpClient();

            try
            {
                client.TimeReceived  += Client_TimeReceived;
                client.ErrorOccurred += Client_ErrorOccurred;
                for (int cnt = 0; cnt < 60; cnt++)
                {
                    client.BeginRequestTime();
                    _GotResultSignal.WaitOne(2000);
                    Assert.IsNotNull(_Result);
                    Assert.AreNotEqual(ntpEpoch, _Result);
                }
            }
            finally
            {
                client.TimeReceived  -= this.Client_TimeReceived;
                client.ErrorOccurred -= this.Client_ErrorOccurred;
            }
        }
コード例 #3
0
ファイル: WinRT_NtpTests.cs プロジェクト: xiangsxuan/Yort.Ntp
        public async Task WinRT_NtpClient_DefaultServer_GetAsyncReturnsResponse()
        {
            var client = new Yort.Ntp.NtpClient();
            var result = await client.RequestTimeAsync();

            Assert.AreNotEqual(DateTime.Now, result.NtpTime);
            Assert.AreEqual(DateTimeKind.Utc, result.ReceivedAt.Kind);
        }
コード例 #4
0
ファイル: GlobalTimeWorker.cs プロジェクト: grisha9154/ris
 public static void GetDate()
 {
     try
     {
         while (true)
         {
             var client = new Yort.Ntp.NtpClient("0.europe.pool.ntp.org");
             CurrentTime = client.RequestTimeAsync().Result;
             Console.WriteLine(CurrentTime);
             Thread.Sleep(1000);
         }
     }
     catch (Exception)
     {
         GetDate();
     }
 }
コード例 #5
0
ファイル: NtpClientTests.cs プロジェクト: Yortw/Yort.Ntp
		public void NtpClient_DefaultServer_GetsNonNullResponse()
		{
			_GotResultSignal = new System.Threading.AutoResetEvent(false);
			var client = new Yort.Ntp.NtpClient();
			try
			{
				client.TimeReceived += Client_TimeReceived;
				client.ErrorOccurred += Client_ErrorOccurred;
				client.BeginRequestTime();
				_GotResultSignal.WaitOne(1000);
				Assert.AreNotEqual(null, _Result);
			}
			finally
			{
				client.TimeReceived -= this.Client_TimeReceived;
				client.ErrorOccurred -= this.Client_ErrorOccurred;
			}
		}
コード例 #6
0
        public void NtpClient_DefaultServer_GetsNonNullResponse()
        {
            _GotResultSignal = new System.Threading.AutoResetEvent(false);
            var client = new Yort.Ntp.NtpClient();

            try
            {
                client.TimeReceived  += Client_TimeReceived;
                client.ErrorOccurred += Client_ErrorOccurred;
                client.BeginRequestTime();
                _GotResultSignal.WaitOne(1000);
                Assert.IsNotNull(_Result);
            }
            finally
            {
                client.TimeReceived  -= this.Client_TimeReceived;
                client.ErrorOccurred -= this.Client_ErrorOccurred;
            }
        }
コード例 #7
0
ファイル: WinRT_NtpTests.cs プロジェクト: Yortw/Yort.Ntp
		public async Task WinRT_NtpClient_DefaultServer_ClientCanBeReused()
		{
			int successCount = 0;
			var client = new Yort.Ntp.NtpClient();
			for (int cnt = 0; cnt < 100; cnt++)
			{
				try
				{
					var currentTime = await client.RequestTimeAsync();
					successCount++;
					Assert.AreNotEqual(DateTime.Now, currentTime);
					await Task.Delay(500);
				}
				catch (NtpNetworkException)
				{
				}
			}
			Assert.AreNotEqual(0, successCount);
		}
コード例 #8
0
ファイル: WinRT_NtpTests.cs プロジェクト: Yortw/Yort.Ntp
		public async Task WinRT_NtpClient_DefaultServer_GetsNonNullResponse()
		{
			var ntpClient = new Yort.Ntp.NtpClient();
			try
			{
				_GotTimeTaskCompletionSource = new TaskCompletionSource<DateTime?>();

				ntpClient.TimeReceived += ntpClient_TimeReceived;
				ntpClient.ErrorOccurred += NtpClient_ErrorOccurred;
				ntpClient.BeginRequestTime();

				var result = await _GotTimeTaskCompletionSource.Task;
				Assert.AreNotEqual(null, result);
			}
			finally
			{
				ntpClient.TimeReceived -= ntpClient_TimeReceived;
			}
		}
コード例 #9
0
        public async Task InitializeNtp()
        {
            try
            {
                string randomServer = NtpServers[new Random().Next(NtpServers.Count)];
                Debug.WriteLine($"Starting NTP client: {randomServer}");

                var client = new Yort.Ntp.NtpClient(randomServer);
                CurrentNtpTime = await client.RequestTimeAsync();

                Debug.WriteLine($"Received time: {CurrentNtpTime}");
                CurrentNtpTimeBase            = DateTimeOffset.UtcNow;
                DifferenceBetweenNtpAndSystem = CurrentNtpTimeBase - CurrentNtpTime;
                Debug.WriteLine($"System-NTP Diff: {DifferenceBetweenNtpAndSystem}");
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"Could not receive time: {ex}");
            }
        }
コード例 #10
0
ファイル: MainViewModel.cs プロジェクト: xiangsxuan/Yort.Ntp
        public async void SyncTime()
        {
            _Client = _Client ?? new NtpClient();

            try
            {
                IsBusy    = true;
                LastError = null;

                NtpDateTime = await _Client.RequestTimeAsync();
            }
            catch (Exception ex)
            {
                LastError = ex.ToString();
            }
            finally
            {
                IsBusy = false;
            }
        }
コード例 #11
0
ファイル: WinRT_NtpTests.cs プロジェクト: xiangsxuan/Yort.Ntp
        public async Task WinRT_NtpClient_DefaultServer_GetsNonNullResponse()
        {
            var ntpClient = new Yort.Ntp.NtpClient();

            try
            {
                _GotTimeTaskCompletionSource = new TaskCompletionSource <DateTime?>();

                ntpClient.TimeReceived  += ntpClient_TimeReceived;
                ntpClient.ErrorOccurred += NtpClient_ErrorOccurred;
                ntpClient.BeginRequestTime();

                var result = await _GotTimeTaskCompletionSource.Task;
                Assert.AreNotEqual(null, result);
            }
            finally
            {
                ntpClient.TimeReceived -= ntpClient_TimeReceived;
            }
        }
コード例 #12
0
ファイル: WinRT_NtpTests.cs プロジェクト: xiangsxuan/Yort.Ntp
        public async Task WinRT_NtpClient_DefaultServer_ClientCanBeReused()
        {
            int successCount = 0;
            var client       = new Yort.Ntp.NtpClient();

            for (int cnt = 0; cnt < 100; cnt++)
            {
                try
                {
                    var result = await client.RequestTimeAsync();

                    successCount++;
                    Assert.AreNotEqual(DateTime.Now, result.NtpTime);
                    await Task.Delay(500);
                }
                catch (NtpNetworkException)
                {
                }
            }
            Assert.AreNotEqual(0, successCount);
        }
コード例 #13
0
ファイル: NTP.cs プロジェクト: lanicon/HarakaMQ
 public async void StartTimeSync()
 {
     ntpClient     = new Yort.Ntp.NtpClient(_serverAddress);
     _accurateTime = await ntpClient.RequestTimeAsync();
 }
コード例 #14
0
ファイル: WinRT_NtpTests.cs プロジェクト: Yortw/Yort.Ntp
		public async Task WinRT_NtpClient_DefaultServer_GetAsyncReturnsResponse()
		{
			var client = new Yort.Ntp.NtpClient();
			var currentTime = await client.RequestTimeAsync();
			Assert.AreNotEqual(DateTime.Now, currentTime);
		}