.NET

これ、元のコードを掲載していたところがわからないのよね。一応、参考にしたサイトを書いておくわね。

あ、実際の時刻変更はしてないわ。それは『時刻合わせをするには?』をみてね。

参考にした元データと変更してあるのは以下の部分だけよ。

       /// <summary>
       /// 強制時刻合わせを試みる。そして得られた時刻データを返す。
       /// </summary>
       /// <returns></returns>
       public static DateTime conNetTime(string servername,int port)
       {
           DateTime r = DateTime.Now;
           DateTime dtSave = r;
           try
           {
               // UDP生成
               System.Net.Sockets.UdpClient objSck;
               System.Net.IPEndPoint ipAny =
                   new System.Net.IPEndPoint(
                   System.Net.IPAddress.Any, 0);
               objSck = new System.Net.Sockets.UdpClient(ipAny);
               // UDP送信
               Byte[] sdat = new Byte[48];
               sdat[0] = 0xB;
               objSck.Send(sdat, sdat.GetLength(0),
                   servername, port);
               // UDP受信
               Byte[] rdat = objSck.Receive(ref ipAny);
               // 1900年1月1日からの経過時間(日時分秒)
               long lngAllS; // 1900年1月1日からの経過秒数
               long lngD;    // 日
               long lngH;    // 時
               long lngM;    // 分
               long lngS;    // 秒
               // 1900年1月1日からの経過秒数
               lngAllS = (long)(
                         rdat[40] * Math.Pow(2, (8 * 3)) +
                         rdat[41] * Math.Pow(2, (8 * 2)) +
                         rdat[42] * Math.Pow(2, (8 * 1)) +
                         rdat[43]);
               lngD = lngAllS / (24 * 60 * 60); // 日
               lngS = lngAllS % (24 * 60 * 60); // 残りの秒数
               lngH = lngS / (60 * 60);         // 時
               lngS = lngS % (60 * 60);         // 残りの秒数
               lngM = lngS / 60;                // 分
               lngS = lngS % 60;                // 秒
               // DateTime型への変換
               DateTime dtTime = new DateTime(1900, 1, 1);
               dtTime = dtTime.AddDays(lngD);
               dtTime = dtTime.AddHours(lngH);
               dtTime = dtTime.AddMinutes(lngM);
               dtTime = dtTime.AddSeconds(lngS);
               // グリニッジ標準時から日本時間への変更
               dtTime = dtTime.AddHours(9);
               r = dtTime;
               //
               SetNowDateTime(dtTime);
           }
           catch (Exception ee)
           {
               // とりあえず時刻をPC側のそれで書き戻しておく。
               r = dtSave;
           }
           // 現在の日時表示
           return (r);
       }

参考にしたサイト

ちょっと調べてみたら、すぐに先賢のサイトがひっかかったわ。本当に感謝します。

C#のコード

どこがオリジナルなのかしら。といってもやっている事がシンプルなので、そんなに違うコードにはなりえないのかもだけど。

公開NTPサーバ情報

C#コードサンプルにあるサイトは今、とても重いの。2005年に福岡大学のNTPサーバが大量アクセスで大変な事になったけど、あの時に似てるかしら。
だから、今回は別のところと探して、NICTの公開NTPサーバのお世話になる事にしたわ。


トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-15 (月) 12:29:18