网络时间协议 --- 网络对时程序
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地址,都不好使.....郁闷....
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?