Наш 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
        {
             //Valid Ip Address
            _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;
    }

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

0 ответов

Другие вопросы по тегам