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機能するようです。

また、現在、すべての制限を削除しました。これの原因を見つける方法はありますか?

ベストアンサー1

おすすめ記事