我正在制作一个需要将系统时钟与远程NTP服务器同步的C++软件.现在,我正在使用"system"命令调用控制台"ntpdate"命令.
..但我认为这是一种丑陋的方式.
你知道任何让我连接到远程NTP服务器的库吗?谢谢.
美好的一天,
我正在尝试实现一个非常基本的NTP客户端,这样我就可以查询远程NTP服务器(即:) pool.ntp.org的互联网时间,以便在每次启动时自动设置我的Windows开发板上的时间.
我在这里重构了另一个用户的代码:
使用sntp从服务器获取时间/日期(windows c ++)
但该计划在该recv()行动中悬而未决.DNS解析和send()操作似乎没有任何问题.
有谁知道我在Windows中可以找到一个简单的NTP客户端示例(GPL是首选,但此时会做任何事情),或者他们可以评论为什么以下代码块会挂起示例(我不应该说"挂",它似乎永远不会收到回应).
NTP_CLIENT.CPP
/******************************************************************************
* Project Headers
*****************************************************************************/
#include "stdafx.h"
#include "ntp_client.h"
/******************************************************************************
* System Headers
*****************************************************************************/
#include <winsock2.h>
#include <winsock.h>
#include <ws2tcpip.h>
/******************************************************************************
* Preprocessor Directives and Macros
*****************************************************************************/
/******************************************************************************
* Class Member Function Definitions
*****************************************************************************/
void Timestamp::ReverseEndian(void) {
ReverseEndianInt(seconds);
ReverseEndianInt(fraction);
}
time_t Timestamp::to_time_t(void) {
return (seconds - ((70 * 365 + 17) * 86400))&0x7fffffff;
}
void NTPMessage::ReverseEndian(void) {
ref.ReverseEndian();
orig.ReverseEndian();
rx.ReverseEndian();
tx.ReverseEndian();
}
int NTPMessage::recv(int sock) …Run Code Online (Sandbox Code Playgroud)