Maison >développement back-end >C++ >Comment interroger un serveur NTP pour la date et l'heure actuelles à l'aide de C #?
Cette méthode dépend du protocole de temps réseau (NTP), qui implique d'envoyer des messages de requête au serveur NTP. Le serveur répondra au message de réponse contenant l'heure actuelle. Ensuite, nous extrassons le temps de la réponse et le convertissons au format disponible.
<code class="language-csharp">using System; using System.Net; using System.Net.Sockets; public static class NTP { public static DateTime GetNetworkTime() { const string ntpServer = "time.windows.com"; const int ntpPort = 123; byte[] ntpData = new byte[48]; ntpData[0] = 0x1B; // LI = 0, VN = 3, Mode = 3 (Client) using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)) { socket.Connect(new IPEndPoint(Dns.GetHostEntry(ntpServer).AddressList[0], ntpPort)); socket.Send(ntpData); socket.Receive(ntpData); } const int serverReplyTime = 40; ulong intPart = BitConverter.ToUInt32(ntpData, serverReplyTime); ulong fractPart = BitConverter.ToUInt32(ntpData, serverReplyTime + 4); intPart = SwapEndianness(intPart); fractPart = SwapEndianness(fractPart); long milliseconds = (long)(intPart * 1000) + (long)((fractPart * 1000) / 0x100000000L); DateTime networkDateTime = new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(milliseconds); return networkDateTime.ToLocalTime(); } private static ulong SwapEndianness(ulong x) { return (ulong)( ((x & 0x000000ff) << 24) | ((x & 0x0000ff00) << 8) | ((x & 0x00ff0000) >> 8) | ((x & 0xff000000) >> 24) ); } }</code>En utilisant ce code, vous pouvez facilement interroger le serveur NTP et obtenir la date et l'heure actuelles. Cette solution Traitement la conversion des commandes d'octets et fournit un moyen flexible de récupérer le temps de tout serveur NTP compatible. Faites attention à la correction de la fonction dans le code pour assurer la conversion d'ordre d'octet correct.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!