时间通过网络连接时间服务器设置本地时间
来源:互联网 发布:淘宝上开刃刀 编辑:程序博客网 时间:2024/05/21 19:28
1、简单来说就是自己编写socket的client连接时间服务器、通过recv就会收到一个秒数..代码如下
// test.cpp.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <iostream>#include <time.h>#ifdef _WIN32#include <Windows.h> #include <dos.h>#include <WinSock.h>#pragma comment(lib,"ws2_32.lib")#else#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/types.h>#include <sys/time.h>#include <unistd.h>#endifusing namespace std;int GetInternetTime(long long &ulTime ) //获取从1900年到现在的秒数{int ret = -1;int Err_i = 0;BEGIN:#ifdef _WIN32WSADATA Ws;if (WSAStartup(MAKEWORD(2,2), &Ws) != 0 ){cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;ret = -1;}SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (s == INVALID_SOCKET) { std::cout<<"create socket error"<<std::endl; ret = -2; } sockaddr_in servAddr;memset(&servAddr,0,sizeof(sockaddr_in));servAddr.sin_family = AF_INET; servAddr.sin_port = htons(37); servAddr.sin_addr.S_un.S_addr = inet_addr("64.236.96.53");if (SOCKET_ERROR == connect(s, (sockaddr *)&servAddr, sizeof(servAddr))) { std::cout<<"connect socket error"<<std::endl; ret = -3; } int nRecv = recv(s, (char *)&ulTime, sizeof(ulTime), 0); ulTime = ntohl(ulTime); closesocket(s); #elsestruct sockaddr_in s_add,c_add;int cfd = socket(AF_INET, SOCK_STREAM, 0);if(int == cfd){printf("socket fail ! \r\n");ret = -1; }memset(&s_add,0,sizeof(struct sockaddr_in));s_add.sin_family=AF_INET;s_add.sin_addr.s_addr= inet_addr("64.236.96.53");s_add.sin_port=htons(37);if(int == connect(cfd,(struct sockaddr *)(&s_add), sizeof(struct sockaddr))){printf("connect fail !\r\n");ret = -1; }if(int == read(cfd,(char *)&ulTime,1024)){printf("read data fail !\r\n");ret = -3; }ulTime = ntohl(ulTime); close(cfd);#endifif(ulTime > 0)ret = 0;else if(Err_i++ < 3) //连接失败、以及获取时间失败重新连接最多失败三次goto BEGIN;return ret;}int main(){long long a = 0;if(!GetInternetTime(a))cout<<a<<endl;/*获取1900年到现在的秒数、转为本地时间。 *注意:因为电脑上的时间基本都是从1970年开始算起的、所有转换之后应该减掉70年*/struct tm *t;/*转为国际时间*/t = gmtime(&a); printf("%04d-%02d-%02d %02d:%02d:%02d\n", t->tm_year +1900 - 70, t->tm_mon + 1, t->tm_mday , t->tm_hour //国际时间, t->tm_min, t->tm_sec);/*转为本地时间*/t = localtime(&a);printf("%04d-%02d-%02d %02d:%02d:%02d\n", t->tm_year +1900 - 70, t->tm_mon + 1, t->tm_mday , t->tm_hour //本地时区的时间, t->tm_min, t->tm_sec);getchar();return 0;}
- 时间通过网络连接时间服务器设置本地时间
- Java通过Ntp服务器获取网络时间修改本地服务器时间
- 通过网络时间服务器获取日期和时间
- 通过NTP服务器获取网络时间C++
- 架设本地时间服务器
- 本地NTP 时间服务器
- 设置本地时间
- 设置本地时间格式
- 设置本地时间格式
- 设置linux服务器时间与网络同步
- 通过网络同步时间
- 通过网络同步时间
- 获取服务器时间和本地时间
- js获取本地时间、服务器时间、倒计时
- cocos2d-x 服务器时间转本地时间
- cocos2d-x 服务器时间转本地时间
- C#同步网络时间和本地时间
- 获取本地时间和网络时间
- 设置socket的Connect超时
- 黑马程序员—Java语言基础1
- KM算法模版(LRJ)
- FreeMarker页面静态化
- oracle学习的初步总结以及date 类型的运用
- 时间通过网络连接时间服务器设置本地时间
- EOutOfResources字符异常
- POI3.9测试
- POJ-3928-Ping pong
- 《敏捷一千零一夜》及官方微信公共账号
- Toast 重复显示完善解决方案
- 多投影完美拼接——边缘融合投影技术
- IOS疯狂基础之UITableView
- 利用SimpleJdbcTemplate进行增删改查