ntpd 소켓 문제

ntpd 소켓 문제

현재 NTP 서버(CentOS 7)를 쿼리하는 C# 프로그램이 있습니다.

public static DateTime GetNetworkTime()
{
    const string ntpServer = "192.168.10.48";
    var ntpData = new byte[48];
    ntpData[0] = 0x1B; //LeapIndicator = 0 (no warning), VersionNum = 3 (IPv4 only), Mode = 3 (Client Mode)

    var addresses = Dns.GetHostEntry(ntpServer).AddressList;
    var ipEndPoint = new IPEndPoint(addresses[0], 123);
    var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    socket.Connect(ipEndPoint);
    socket.Send(ntpData);
    socket.Receive(ntpData);
    socket.Close();

    ulong intPart = (ulong)ntpData[40] << 24 | (ulong)ntpData[41] << 16 | (ulong)ntpData[42] << 8 | (ulong)ntpData[43];
    ulong fractPart = (ulong)ntpData[44] << 24 | (ulong)ntpData[45] << 16 | (ulong)ntpData[46] << 8 | (ulong)ntpData[47];

    var milliseconds = (intPart * 1000) + ((fractPart * 1000) / 0x100000000L);
    var networkDateTime = (new DateTime(1900, 1, 1)).AddMilliseconds((long)milliseconds);

    return networkDateTime;
}

이 방법은 작동하지만 잠시 후 오류를 반환합니다.

일정 시간 이후 연결된 당사자가 제대로 응답하지 않아 연결 시도가 실패했거나, 연결된 호스트가 응답하지 않아 연결 설정에 실패했습니다.

다른 컴퓨터에서는 계속 작동할 수 있습니다. ntpd소켓 연결을 차단하는 방화벽이 내장되어 있는 것 같습니다 . 내 방화벽이 오프라인 상태입니다. 또한 ntp 서버를 like로 변경하면 asia.pool.ntp.org작동하는 것 같습니다.

또한 현재 모든 제한 사항을 제거했습니다. 이것의 원인을 찾을 수 있는 방법이 있나요?

관련 정보