永发信息网

如何获取服务器时间

答案:1  悬赏:0  手机版
解决时间 2021-02-18 14:43
如何使用C++程序获取一个固定的服务器的时间,比如www.baidu.com的时间
最佳答案
// 思路是发送一个http请求,然后从response字符串里截取出Date部分,这样得到的时间是GMT格式的,不过转本地时间也很容易了

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

int main()
{
WSADATA wsaData;
addrinfo hints, *rs;
sockaddr_in serveraddr;
SOCKET s;
char host[256], hostIP[256], request[1024], *p;
int rc, nBytes;

WSAStartup(MAKEWORd(2, 2), &wsaData);
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

printf("plz input host name(eg.www.example.com):");
gets(host);
ZeroMemory(&hints, sizeof(addrinfo));
hints.ai_flags = AI_PASSIVE;
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;

rc = getaddrinfo(host, "80", &hints, &rs);

if(rc != 0) {
printf("getaddrinfo failed with error code:%d\n", WSAGetLastError());
goto clean;
}

getnameinfo(rs->ai_addr, rs->ai_addrlen, hostIP, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
printf("server ip is: %s\n", hostIP);
freeaddrinfo(rs);

serveraddr.sin_family = AF_INET;
serveraddr.sin_addr.s_addr = inet_addr(hostIP);
serveraddr.sin_port = htons(80);

rc = connect(s, (SOCKADDR*) &serveraddr, sizeof(serveraddr));
if(rc != 0) {
printf("connect to server failed.");
goto clean;
}

strcpy(request, "GET / HTTP/1.1\r\n");
strcat(request, "Host: ");
strcat(request, host);
strcat(request, "\r\nConnection: close\r\n\r\n");
send(s, request, strlen(request), 0);
while(1)
{
nBytes = recv(s, request, 1024, 0);
if(nBytes == SOCKET_ERROR)
{
printf("recv failed with error %d\n",WSAGetLastError());
goto clean;
} else {
p = strstr(request, "Date:");
p += 5;
while(*p == ' ') ++p;
printf("server time: ");
while(*p != '\r')
putchar(*p++);
putchar('\n');
break;
}

}
clean:
closesocket(s);
WSACleanup();
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海贼王宝藏巡航iOS怎么下载呢,app也搜不到。
为什么进不了电脑版的秀人网
2010年美术联考只考了190分没过本科线,还能
沧州养孔雀鱼好养吗,怎么养
怎样看电脑电源输入电压幅度
一个女生送你耳钉代表什么意思?
非法拘禁从犯只是去给开了车
白家老店在什么地方啊,我要过去处理事情
4省内天翼视讯定向流量包账本共10240MB,剩余
男人为什么爱吹口哨
中国广西渔港监督局地址在什么地方,想过去办
the environment is being sacrificed for ec
手机yy里自己创的频道为什么说话有回声
MySQL中 CASE WHEN THEN then后面跟常量是没
按照城镇土地使用税的有关规定,下列表述中正
推荐资讯
时珍大药房珙县巡场镇米市街连锁店这个地址在
怎么写追风筝的人读后感1000左右,谢谢
剑网3的人物怎样沉进水里深处?
半焦和焦炭有什么区别?
请问为什么我登录完CF,看英雄武器黑骑士的价
雕刻时光在什么地方啊,我要过去处理事情
( )门( )类 中间可以填什么 组成四字成语
哪种笔记本电脑的屏幕清晰
海安县西场镇壮志幼儿园这个地址在什么地方,
苹果手机能用应用宝吗
麻辣香锅这个地址在什么地方,我要处理点事
冬天卖什么小东西挣钱
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?