网络时间协议 --- 网络对时程序

 1 // TCPIP time protocol.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5  #include <winsock2.h>
 6  #include <stdio.h>
 7  #pragma comment(lib,"WS2_32")
 8  class CInitSock
 9  {
10  public:
11      CInitSock(BYTE minorVer=2,BYTE majorVer=2)
12      {
13          WSADATA wsaData;
14          WORD sockVersion = MAKEWORD(minorVer,majorVer);
15          if(::WSAStartup(sockVersion,&wsaData)!=0)
16          {
17              exit(0);
18          }
19      }
20      ~CInitSock()
21      {
22          ::WSACleanup();
23      }
24  };
25 CInitSock initSock;
26 void SetTimeFromTP(ULONG ulTime)
27 {
28     FILETIME ft;
29     SYSTEMTIME st;
30     st.wYear = 1900;
31     st.wMonth = 1;
32     st.wDay = 1;
33     st.wHour = 0;
34     st.wMinute = 0;
35     st.wSecond = 0;
36     st.wMilliseconds = 0;
37     SystemTimeToFileTime(&st,&ft);
38 
39     LONGLONG *pLLong=(LONGLONG*)&ft;
40     *pLLong +=(LONGLONG)10000000*ulTime;
41     FileTimeToSystemTime(&ft,&st);
42     SetSystemTime(&st);
43 }
44 int main()
45 {
46     SOCKET s = ::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
47     if(s == INVALID_SOCKET)
48     {
49         printf("Failed socket()\n");
50         return 0;
51     }
52     sockaddr_in servAddr;
53     servAddr.sin_family = AF_INET;
54     servAddr.sin_port = htons(37);
55 
56     servAddr.sin_addr.S_un.S_addr = inet_addr("18.145.0.30");
57     if(::connect(s,(sockaddr*)&servAddr,sizeof(servAddr)) == -1)
58     {
59         printf("Failed connect()\n");
60         return 0;
61     }
62 
63     ULONG ulTime = 0;
64     int nRecv = ::recv(s,(char*)&ulTime,sizeof(ulTime),0);
65     if(nRecv>0)
66     {
67         ulTime=ntohl(ulTime);
68         SetTimeFromTP(ulTime);
69         printf("成功与时间服务器的时间同步!\n");
70     }
71     else
72     {
73         printf("时间服务器不能确定当前时间!\n");
74     }
75     ::closesocket(s);
76     return 0;
77 }

试了好多服务器IP地址,都不好使.....郁闷....

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(75)-微信公众平台开发-用户管理

前言 本节主要是关注者(即用户)和用户组的管理,微信公众号提供了用户和用户组的管理,我们可以在微信公众号官方里面进行操作,添加备注和标签,以及移动用户组别,同...

5546
来自专栏向治洪

android PakageManagerService启动流程分析

PakageManagerService的启动流程图 ? 1.PakageManagerService概述 PakageManagerService是andro...

50710
来自专栏移动端周边技术扩展

iOS打开系统功能对应的URL

1843
来自专栏数据和云

推陈出新:12C 推进 SCN 新方法实践

在数据库异常恢复中,经常需要修改数据库的 SCN 值,在 12C 之前,我们常用的方法有如下几个: oradebug poke 直接修改内存中的值; event...

40110
来自专栏乐沙弥的世界

Oracle Net Services - Tracing and Logging at a Glance

    Oracle Net trace 用于跟踪或调试oracle连接故障,连接异常断开或者连接超时等情形,通过产生详细的跟踪信息来进行分析和诊断Oracle...

683
来自专栏乐沙弥的世界

ORA-32004 的错误处理

启动数据库时,收到了ORA-32004 的错误,错误多是一些过时且在当前版本中不在使用的参数,如果碰到类似的错误,只需要将其

1152
来自专栏FreeBuf

EE 4GEE Mini本地提权漏洞(CVE-2018-14327)分析

我在前段时间从买了一个4G调制解调器。这是一个便携式4G WiFi移动宽带调制解调器。有一天,我查看了安装在电脑上的用于故障排除的服务,我看到了一个奇怪的服务,...

873
来自专栏Seebug漏洞平台

花式窃取NetNTLM哈希的方法

原文:https://osandamalith.com/2017/03/24/places-of-interest-in-stealing-netntlm-ha...

3198
来自专栏xingoo, 一个梦想做发明家的程序员

UDP连接代码

由于只有部分代码,自己填不上.......程序未能运行成功,悲剧! server: 1 SOCKET s = ::socket(AF_INET,SOCK_DG...

2628
来自专栏蓝天

同时具备多线程和多进程安全的写日志工具

接口请浏览:https://github.com/eyjian/mooon/blob/master/mooon/include/mooon/sys/log.h ...

2464

扫码关注云+社区

领取腾讯云代金券