以下代码为采用c++通过sockt udp 编程获取NTP服务器的网络时间:

.h文件代码

#include <winsock2.h>
#include <ws2tcpip.h>
#include<ctime>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#pragma   comment   (lib,"Ws2_32.lib")
struct NTPPacket
{union{struct _ControlWord{unsigned int uLI : 2;       // 00 = no leap, clock ok   unsigned int uVersion : 3;  // version 3 or version 4unsigned int uMode : 3;     // 3 for client, 4 for server, etc.unsigned int uStratum : 8;  // 0 is unspecified, 1 for primary reference system,// 2 for next level, etc.int nPoll : 8;              // seconds as the nearest power of 2int nPrecision : 8;         // seconds to the nearest power of 2};int nControlWord;             // 4};int nRootDelay;                   // 4int nRootDispersion;              // 4int nReferenceIdentifier;         // 4__int64 n64ReferenceTimestamp;    // 8__int64 n64OriginateTimestamp;    // 8__int64 n64ReceiveTimestamp;      // 8int nTransmitTimestampSeconds;    // 4int nTransmitTimestampFractions;  // 4
};

.c文件代码主要是一个函数的实现:

#include"XXXX.h"//包含上面的头文件,文件名自取
int Get_time_t(time_t & ttime)
{ttime = 0;WSADATA wsaData;// Initialize Winsockint iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);if (iResult != 0) return 0;int result, count;int sockfd=0, rc;sockfd=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (sockfd < 0) return 0;fd_set pending_data;timeval block_time;NTPPacket ntpSend = { 0 };ntpSend.nControlWord = 0x1B;NTPPacket ntpRecv;SOCKADDR_IN addr_server;addr_server.sin_family = AF_INET;addr_server.sin_port = htons(123);//NTP服务默认为123端口号addr_server.sin_addr.S_un.S_addr = inet_addr("120.25.115.20"); //该地址为阿里云NTP服务器的公网地址,其他NTP服务器地址可自行百度搜索。SOCKADDR_IN sock;int len = sizeof(sock);if ((result = sendto(sockfd, (const char*)&ntpSend, sizeof(NTPPacket), 0,(SOCKADDR *)&addr_server, sizeof(SOCKADDR))) < 0){int err = WSAGetLastError();return 0;} FD_ZERO(&pending_data);FD_SET(sockfd, &pending_data);//timeout 10 secblock_time.tv_sec = 10;block_time.tv_usec = 0;if (select(sockfd + 1, &pending_data, NULL, NULL, &block_time) > 0){//获取的时间为1900年1月1日到现在的秒数if ((count = recvfrom(sockfd, (char*)&ntpRecv, sizeof(NTPPacket), 0, (SOCKADDR*)&sock, &len)) > 0)ttime = ntohl(ntpRecv.nTransmitTimestampSeconds) - JAN_1970;}closesocket(sockfd);WSACleanup();return 1;
}
int main(){//获取到的t为一个时间戳,请根据需求转换成可视化时间time_t  t;Get_time_t(t);printf("time is %ld",t);return 0;
}

windows 下c++ 获取NTP服务器网络时间相关推荐

  1. win7系统ntp时间服务器,win7与内部ntp服务器同步时间出来错误【NTP时间同步服务器】...

    试试编辑略,运行"gpedit.msc",依次展开"计算机"-"管理模版"-"系-"Windows 时间服务" ...

  2. ntp如何确认与服务器偏差_怎么测试linux下搭建的ntp服务器

    展开全部 三.什么是NTP 为了实现时间同步,我们就需要用户NTP(Network Time Protocol)这个协议32313133353236313431303231363533e78988e6 ...

  3. 常用的linux远程管理方法,常用windows下远程管理Linux服务器的方法

    常用windows下远程管理Linux服务器的方法 来源:互联网 作者:佚名 时间:2013-04-14 12:48 随着互联网的高速发展以及Linux企业应用的成熟,Linux被广泛应用于服务器领域 ...

  4. linux系统指定ntp服务器,Linux系统下如何使用NTP服务器?

    Linux系统下的NTP服务器指的是网络时间同步协议,其作用就是同步网络时间和Linux系统中的时间,使得Linux时间更加精确.下面就来介绍一下Linux系统下如何使用NTP服务器. 一.ntp配置 ...

  5. Windows 下使用 SNMP 来管理网络

    本文介绍了 SNMP 协议 的基本概念,SNMP 的作用,以及如何在 Windows 下使用 SNMP 来管理网络中的设备. SNMP 的介绍 SNMP(Simple Network Manageme ...

  6. windows下的免费邮件服务器软件hMailServer

    公司购买了企业邮局给员工提供邮件服务,这样收发外部邮件都没有问题,但有个非常不好的地方,绝大多数邮件都是在内部互相之间转发的 ,结果就导致一个问题,不管这个邮件是不是发给内部的, 邮件都得到外部邮件服 ...

  7. Linux强制与NTP服务器同步时间

    Redhat 7: 先停止ntp服务,然后强制与NTP服务器的时间同步,完成后再启动ntp服务. # systemctl stop ntpd # ntpdate ntp-server-ip (如果想不 ...

  8. WEB相关:Windows下打造完美的服务器平台

    Windows下打造完美的服务器平台(APACHE+JSP+CGI+PHP+ASP+MYSQL) 需要下载几个软件包: 1. php-5.0.2-Win32 2. apache_2.0.52-win3 ...

  9. Windows下快速获取一个文件夹下所有文件的名称列表

    Windows下快速获取一个文件夹下所有文件的名称列表 进入windows终端:win+R 输入cmd,回车 使用cd命令进入到目标文件夹.例如: 先进入D盘,输入d: 回车, 然后 cd openc ...

最新文章

  1. mysql 导入导出 优化_mysql数据导入导出与数据表优化
  2. 以太坊Oracle系列二:My Oracle
  3. R语言心得-分词包的安装
  4. python异常处理操作语句_异常处理语句(2)
  5. mysql 替代like_mysql用instr替代like查询
  6. Centos7常用命令[挂载文件系统]
  7. html动态绑定树形菜单,jQuery ztree实现动态树形多选菜单
  8. android 对象输出到文件
  9. 北大核刊最新版2020目录_重磅!最新版CSSCI 来源期刊目录(2019-2020)
  10. matlab 文本分类,中文文本分类语料库-TanCorpV1.0
  11. 罗永浩“卖艺”还债:所有命运馈赠的礼物,都早已在暗中标好了价格
  12. 自定义linux桌面,教您6个自定义Ubuntu桌面的步骤
  13. 数据挖掘考前30分钟必看(2.0版本)
  14. 老男孩MySqI DBA周末班(三期)
  15. 读书的意义—献给第19个世界读书日
  16. 如何解决打开keil工程软件闪退问题
  17. Supermap iClient 展示与空间数据绑定的图片
  18. R7 5800H 3060 ubuntu20 配置全纪录(一)主要包括:N卡驱动、网卡驱动、virtualenv、CUDA and pytorch
  19. 计算机网络与网络管理 基础知识
  20. Bootstrap教程简介

热门文章

  1. HDU 4013 Distinct Subtrees(树同构)
  2. 从世界杯观赛看,“移动视频”就是个伪命题
  3. 用Flutter手撸一个抖音国际版 看看有多炫
  4. linux 卸载软件不卸载依赖
  5. win10计算机命名规则,Win10,颠覆Windows命名规则
  6. 反应式编程之flux concatmap
  7. kali linux设置静态ip
  8. clinux 防火墙增加白名单_linux防火墙白名单设置方法
  9. 树莓派python手势识别控制_Raspberry Pi和手势传感器控制LED
  10. win7下面运行软件崩溃的问题:CLR20r3 system.io.fileloadexception