我们的SNTP服务器没有响应我的请求

时间:2017-09-05 14:41:40

标签: c# ntp

我编写了一个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 个答案:

没有答案