Member 13371894 Ответов: 1

Наш SNTP сервер не отвечает на мои запросы


Всем привет,

Я написал клиентский код SNTP для получения информации о времени, как показано ниже. В этом случае код останавливается на строке _sntpMessageRequest.SNTPData = _udpClient.Receive (ref _ipEndpoint); так как SNTP-сервер не отвечает.
public bool QueryTimeSynchronizationServer()
{
	UdpClient _udpClient = null;
	IPEndPoint _ipEndpoint = null;
	string _ipString = null;
	IPAddress _ipAddress = null;
	int _portNumber = 123;

	try
	{
		_ipString = "ip address";
		IPAddress.TryParse(_ipString, out _ipAddress);
		_ipEndpoint = new IPEndPoint(_ipAddress, _portNumber);

		 //SNTPMessageRequest-> a object holds the Byte array for SNTP request and do other supporting functions
		SNTPMessageRequest _sntpMessageRequest = FrameSNTPMessageRequest();

		using (_udpClient = new UdpClient(123))
		{
			_udpClient.Client.SendTimeout = 5000;
			_udpClient.Client.ReceiveTimeout = 5000;
			_udpClient.Connect(_ipEndpoint);

			_udpClient.Send(_sntpMessageRequest.SNTPData, _sntpMessageRequest.SNTPData.Length);

			 //Code stops at below line as SNTP Server is not responding.
			_sntpMessageRequest.SNTPData = _udpClient.Receive(ref _ipEndpoint);
			_sntpMessageRequest.ReceptionTimestamp = DateTime.Now;

			string _serverTime = _sntpMessageRequest.TransmitTimeStamp.ToString();
		}
	}
	catch (Exception ex)
	{
		
	}
	return true;
}

private SNTPMessageRequest FrameSNTPMessageRequest()
{
	 
	SNTPMessageRequest _sntpMessageRequest = new SNTPMessageRequest();

	_sntpMessageRequest.VersionNumber = VersionNumber.Version3;
	_sntpMessageRequest.Mode = Mode.Client;

	for (int i = 1; i < 48; i++)
	{
		_sntpMessageRequest.SNTPData[i] = 0;
	}

	_sntpMessageRequest.TransmitTimeStamp = DateTime.Now.ToLocalTime();
	return _sntpMessageRequest;
}

Пожалуйста, помогите мне с тем, где я делаю ошибку.
заранее спасибо.
Ранджит.

Что я уже пробовал:

Я попытался отправить SNTP-запрос со всеми четырьмя версиями (1-4), но сервер не отвечает.

1 Ответов

Рейтинг:
10