当前位置: 首页 > news >正文

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

 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地址,都不好使.....郁闷....

相关文章:

  • Cocoa、Foundation、UIKit的概念
  • 想象你在镜子前,请问,为什么镜子中的影像可以颠倒左右,却不能颠倒上下?...
  • 浏览器是怎样工作的:渲染引擎,HTML解析(连载二)
  • NoSQL数据库大全收集整理
  • Android对象封装及按汉语拼音排序
  • 虚拟目录
  • Tomcat StringManager阅读学习 -我们到底能走多远系列(10)
  • robots协议
  • 使用ManageEngine NetFlow Analyzer监控netflow
  • 一个超棒的帮助你了解科技公司如何盈利的网站 - rcs.seerinteractive.com
  • 选IDC需注意五点 服务器托管的综合优势
  • 英语还是很有用的
  • ORACLE数据库从11.2.0.1.0upgrade to 11.2.0.3.0
  • H264 I帧 P帧
  • centos关机与重启命令详解
  • 【译】JS基础算法脚本:字符串结尾
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【node学习】协程
  • canvas 五子棋游戏
  • express.js的介绍及使用
  • Javascript 原型链
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python学习之路13-记分
  • SQLServer插入数据
  • TypeScript实现数据结构(一)栈,队列,链表
  • 第2章 网络文档
  • 给初学者:JavaScript 中数组操作注意点
  • 机器学习 vs. 深度学习
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端相关框架总和
  • 区块链分支循环
  • 如何在 Tornado 中实现 Middleware
  • 深入浅出webpack学习(1)--核心概念
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #WEB前端(HTML属性)
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • $.ajax()参数及用法
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分布式缓存)Redis持久化
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十六)一篇文章学会Java的常用API
  • (一)基于IDEA的JAVA基础10
  • (转)利用ant在Mac 下自动化打包签名Android程序