Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1495964
  • 博文数量: 218
  • 博客积分: 6394
  • 博客等级: 准将
  • 技术积分: 2563
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-08 15:33
个人简介

持之以恒

文章分类

全部博文(218)

文章存档

2013年(8)

2012年(2)

2011年(21)

2010年(55)

2009年(116)

2008年(16)

分类: WINDOWS

2009-07-10 09:50:55

这是一个网络对时的程序
stdafx.h中加上
注意加载相应的Lib库
#pragma comment(lib,"WS2_32");
#include
#include

#pragma once
#include "stdafx.h"
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);
}

void InitSock()
{
    WSADATA wsaData;
    DWORD version;
    if(WSAStartup(MAKEWORD(2,2),&wsaData))
    {
        exit(0);
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    InitSock();
    SOCKET s = ::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(s == INVALID_SOCKET)
    {
        printf("Fail to Create Socket!");
        return 0;
    }
    sockaddr_in servAddr;
    servAddr.sin_family = AF_INET;
    servAddr.sin_port = htons(37);
    servAddr.sin_addr.S_un.S_addr = inet_addr("129.6.15.28");
    if(::connect(s,(sockaddr *)&servAddr,sizeof(servAddr)) == -1)
    {
        printf("Fail to Connect!\n");
        return 0;
    }
    ULONG ulTime = 0;
    int nRecv = ::recv(s,(char*)&ulTime,sizeof(ulTime),0);
    if(nRecv > 0)
    {
        ulTime = ntohl(ulTime);
        SetTimeFromTP(ulTime);
        printf("成功和服务器进行了同步!\n");
    }
    else
    {
        printf("没有成功和服务器进行了同步!\n");
    }
    ::closesocket(s);
    system("pause");
    return 0;
}

//加载WinSock库,使用WSAStart函数
//创建一个Socket使用socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//填写远程地址,相应的sockaddr_in结构
//连接远程服务器:connect(socket,(sockaddr *)&sockaddr_in,sizeof(sockaddr_in));
//接收,相应的RECEIVE函数

阅读(553) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~