#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <string.h>
using namespace std;
#pragma comment(lib, "WS2_32.lib")
class CInitSock
{
public:
CInitSock(int version01 = 2, int versiont02 = 2)
{
WORD sockVersion = MAKEWORD(2, 2);
WSADATA wsaData = {0};
if (WSAStartup(sockVersion, &wsaData) != 0)
{
cout << "initlization failed!" << endl;
exit(0);
}
}
~CInitSock()
{
WSACleanup();
}
};
CInitSock mysock;
void SetTimeFromTP(ULONG ulTime)
{
FILETIME ft;
SYSTEMTIME st;
st.wYear = 1900;
st.wMonth = 1;
st.wDay = 1;
st.wHour = 0;
st.wMinute = 0;
st.wSecond = 0;
st.wMilliseconds=0;
SystemTimeToFileTime(&st, &ft);
LONGLONG* pLLong = (LONGLONG*)&ft;
*pLLong += (LONGLONG)10000000 & ulTime;
FileTimeToSystemTime(&ft, &st);
SetSystemTime(&st);
}
int main()
{
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
{
cout << "faied socket" << endl;
return 0;
}
sockaddr_in sin;
sin.sin_addr.S_un.S_addr = inet_addr("129.6.15.28");
sin.sin_family = AF_INET;
sin.sin_port = htons(37);
if (connect(s, (sockaddr*)&sin, sizeof(sin)) == -1)
{
cout << "failed connect..." << endl;
return 0;
}
ULONG ulTime = 0;
int nRecv = recv(s, (char*)&ulTime, sizeof(ulTime), 0);
if (nRecv > 0)
{
ulTime = ntohl(ulTime);
SetTimeFromTP(ulTime);
cout << "update time successfully!" << endl;
}
else
{
cout << "can't update time..." << endl;
}
closesocket(s);
return 0;
}