ホームページ > バックエンド開発 > C++ > NTPサーバーをクエリして、C#を使用して現在の時間を取得するにはどうすればよいですか?

NTPサーバーをクエリして、C#を使用して現在の時間を取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-29 00:41:10
オリジナル
859 人が閲覧しました

How Can I Query an NTP Server and Get the Current Time Using C#?

C#およびNTPサーバーとの正確な時間同期:ステップバイステップガイド

ネットワークタイムプロトコル(NTP)は、ネットワークシステム間で時間を同期するために不可欠です。このガイドは、C#を使用してNTPサーバーを照会し、現在の時間を取得する方法を示しています。

NTPサーバーから現在の時刻を取得

プロセスには、これらの重要な手順が含まれます

UDP接続を確立します:
    ポート123でNTPサーバーへのUDPソケット接続(IPアドレスまたはホスト名を使用)を作成します。
  1. ntp要求を作成します:48バイトのNTPリクエストメッセージを作成し、LEAPインジケーター、バージョン番号、モードフィールドを適切に設定します。
  2. 送信と受信:リクエストを送信してサーバーの応答を待ちます。
  3. 応答をデコードします:
  4. 受信したメッセージを解析し、重要な送信タイムスタンプを抽出します。 DateTimeに変換する:タイムスタンプ(多くの場合、Unix時間として表される)をC#
  5. オブジェクトに変換します。
  6. c#コード例
  7. 次のコードスニペットは、NTPサーバーを照会し、応答をオブジェクトに変換する方法を示しています。 DateTime
  8. 必要な名前空間を含めることを忘れないでください:

(注:メッセージの作成、ネットワーク通信、タイムスタンプ変換の完全な実装は大幅に長く、バイト配列とビット操作の詳細な処理が必要です。この例は、高レベルの構造に焦点を当てています。 >

DateTime結論

<code class="language-csharp">using System.Net;
using System.Net.Sockets;
using System;

public static class NTPClient
{
    public static DateTime GetNetworkTime()
    {
        const string ntpServer = "time.windows.com"; // Example server
        const byte ntpProtocolVersion = 3;
        const byte modeClient = 3;

        // ... (NTP request message creation and network communication omitted for brevity) ...

        // ... (Timestamp extraction and conversion to DateTime omitted for brevity) ...

        return dateTime; // Returns the DateTime object
    }
}</code>
ログイン後にコピー

このメソッドにより、C#アプリケーションはNTPサーバーから現在の時間を正確に取得できます。 この機能は、ロギング、イベントシーケンス、システムの同期など、正確なタイムキーピングを必要とするアプリケーションに不可欠です。 完全なコードには、NTPパケット形式とネットワーク操作の処理に関するより複雑な詳細が含まれます。

以上がNTPサーバーをクエリして、C#を使用して現在の時間を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート