VC++にてNTPサーバから時刻を取得するためにNetRemoteTODを用いていますが、以下の方法ではコンパイルはできるのですが、プログラム実行時にサーバにつながらなくエラーとなります。サーバの指定方法がまずい気もするのですが、どのように修正すればよいのかご教授よろしくお願いします。
LPTIME_OF_DAY_INFO pBuf = NULL;
NET_API_STATUS nStatus = NetRemoteTOD(L"\\\\ntp.jst.mfeed.ad.jp", (LPBYTE *)&pBuf);
if(nStatus == NERR_Success){
if(pBuf != NULL){
char d[1024];
sprintf(d, "%d/%d/%d %d:%d:%d", pBuf->tod_month, pBuf->tod_day, pBuf->tod_year, pBuf->tod_hours, pBuf->tod_mins, pBuf->tod_secs);
AfxMessageBox(d,MB_OK|MB_ICONSTOP);
}
}
else{
AfxMessageBox("Error in NetRemoteTOD",MB_OK|MB_ICONSTOP);
}
if (pBuf != NULL) NetApiBufferFree(pBuf);
No.2ベストアンサー
- 回答日時:
>どのように時刻を取得できるでしょうか。
APIで一発。
というワケには行かないんじゃないですかねぇ…。
・自前でNTPかSNTPプロトコルを実装する。
・外部のNTP/SNTPクライアントを子プロセスで起動して結果から取得(または同期後にローカルタイムを取得)。
のどちらかになるかと。
自前で実装するならNTPよりはSNTPの方が簡単かと思われます。
# Simpleっていうくらいだし。
RFCなどで確認…でしょうかねぇ。
http://ja.wikipedia.org/wiki/Network_Time_Protocol
http://ja.wikipedia.org/wiki/Simple_Network_Time …
# 後者はRFCの番号の確認くらいしかできませんな。
「Windows SNTP サンプル」で検索してみると、他の方が実装してみたサンプルとか見つかるかも知れません。
http://www2.ocn.ne.jp/~honeybee/program/sample/G …
とか。
外部のクライアントの方も環境が許せばw32tm.exeが使えますかねぇ。
# オプション指定いくつか試したけど…無理かなぁ。
# /resyncで同期して、ローカルタイム取得ですかな。
ありがとうございます。
http://www2.ocn.ne.jp/~honeybee/program/sample/G …
のサンプルでうまく動作しました!
No.1
- 回答日時:
NetRemoteTOD()はNTP(SNTP)で時刻を取得するのではなく、NetBIOSとかのWindowsネットワークのプロトコルで時刻を取得するモノかと。
nStatusにエラーコードが返されているでしょうからそちらも調べてみた方が良いかと。
# 2184が返されて、ErrorLookupでは「サービスが開始していません。」となりましたけどね。
手元のsambaが動作しているLinuxサーバ(ntpも稼働)では取れましたが、sambaがヨロシク応答してくれたモノと思われます。
# さすがにsamba止めてまで確認していないが。
この回答への補足
ありがとうございます。
NetRemoteTOD()でないとすると、どのように時刻を取得できるでしょうか。使用しているパソコンでなく、外部の実際の時刻、日付を取得したいと考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- ドイツ語 若い頃、聞いたので記憶が少し曖昧ですが、次のドイツ語の原典をご教示ください。(意訳で「死は全てを解決 1 2023/06/15 11:36
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
like演算子内に変数って使えな...
-
データ数をカウントしたいのですが
-
アクセスしてきたコンピュータ...
-
Spreadの選択行の取得について
-
利用者側のMACアドレスを取得し...
-
ListViewで複数選択された項目...
-
VB .netにて現在時刻+1時間後...
-
getParameter と getAttribut...
-
VBA リストボックス内の値を複...
-
.NETで現在時刻を常に動作させ...
-
UWSCでhtmlソースの文字列を取...
-
リクエストからArrayListのデー...
-
エクセルVBAで複数選択できるよ...
-
URLパラメータの取得方法を教え...
-
DataGridView 複数選択で行番...
-
JavaScriptにおいてコンピュー...
-
count(*)で取得した値をJAVAの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
ListView 項目の選択/選択解除...
-
VBA:小数点以下の数字を取得で...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
JavaScriptでWindowsログオンID...
-
利用者側のMACアドレスを取得し...
-
郵便番号検索APIにてget Elemen...
-
COMポート 名前を取得する方法
-
コンボボックス表示文字列を取...
-
VBA Shapesの座標からセル位置...
-
Spreadの選択行の取得について
-
VBScriptで数値にコンマを付け...
-
C言語におけるコンピュータ名・...
-
Excel VBA でログインしてい...
おすすめ情報