看流星社区

 找回密码
 注册账号
查看: 1890|回复: 0

设置系统时间 系统时间网络更新

[复制链接]

该用户从未签到

发表于 2017-6-2 13:22:31 | 显示全部楼层 |阅读模式
代码:
//根据返回的时间设置系统时间
void setTimeFromTP(ULONG ulTime)
{
        FILETIME ft;
        SYSTEMTIME st;

        //将基准时间转换成windows文件时间
        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);
}

void main()
{
        CInitSock initSock;
        SOCKET s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (s == INVALID_SOCKET)
        {
                printf("socket error...");
                return;
        }
        sockaddr_in servAddr = {0};
        servAddr.sin_family = AF_INET;
        servAddr.sin_port = ::htons(37);
        servAddr.sin_addr.S_un.S_addr = ::inet_addr("69.25.96.13"); //别用210.72.145.44这个IP, 这是天朝的 常TMD不返回值
        if (SOCKET_ERROR == ::connect(s, (sockaddr*)&servAddr, sizeof(servAddr)))
        {
                printf("connect error..");
                return;
        }

        //接收时间
        ULONG ulTime = 0;
        int nRecv = ::recv(s, (char*)&ulTime, sizeof(ulTime), 0);
        if (nRecv > 0)  //收到数据
        {
                ulTime = ::ntohl(ulTime);
                setTimeFromTP(ulTime);
        }
        else
        {
                printf("recv error...");
                return;
        }
       
        ::closesocket(s);
        printf("*******************************");
        getchar();
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 19:02

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表