Winsock编程基继承基础(网络对时程序)
#include <iostream>
#include <stdio.h> #include "InitSock.h" using namespace std; void SetTimeFromTP(ULONG ulTime); int main(void)
{
CInitSock initSock;
//创建套接字
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
{
cout << "Failed socke()" << endl;
return ;
}
//创建套接字之后如果首先sendto可以不绑定
//若首先recvfrom则需要绑定 //填写远程地址信息
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons();
addr.sin_addr.S_un.S_addr = inet_addr("129.6.15.28 "); //可在http://tf.nist.gov/service/time-servers.html得到IP //连接服务器
if (connect(s, (sockaddr*)&addr, sizeof(addr)) == -)
{
cout << "Failed connect()" << endl;
return ;
} //等待接收时间协议返回的时间,学习Winsock I/O模型后最好使用异步I/O
ULONG ulTime = ;
int nRecv = recv(s, (char*)&ulTime, sizeof(ulTime), );
if (nRecv > )
{
ulTime = ntohl(ulTime);
SetTimeFromTP(ulTime);
cout << "成功与服务器时间同步" << endl;
cout << "接收到的数据: " << ulTime << endl;
}
else
{
cout << "服务器不能确认当前时间" << endl;
} closesocket(s); getchar();
return ;
} void SetTimeFromTP(ULONG ulTime)
{
//Windows文件时间是一个64位的值,是从1601年1月1日中午12:00到现在的时间间隔
//单位是1/1000 0000秒即1000万分之1秒(100-nanosecond)
FILETIME ft;
SYSTEMTIME st;
//首先将基准时间(1900.1.1.0.0.0.0)转换为windows文件时间
st.wYear = ;
st.wMonth = ;
st.wDay = ;
st.wHour = ;
st.wMinute = ;
st.wSecond = ;
st.wMilliseconds = ; SystemTimeToFileTime(&st, &ft);
//然后将Time Protocol使用基准时间加上已经逝去的时间即ulTime
LONGLONG *pLLong = (LONGLONG*)&ft;
//注意文件时间的单位
*pLLong += (LONGLONG) * ulTime;
//再将时间转换回来,更新系统时间
FileTimeToSystemTime(&ft, &st);
//SetSystemTime(&st);
cout << st.wYear << "年"
<< st.wMonth << "月"
<< st.wDay << "日"
<< st.wHour + << "时" //...
<< st.wMinute << "分"
<< st.wSecond << "秒" << endl; }
Winsock编程基继承基础(网络对时程序)的更多相关文章
- Winsock编程基础介绍 .
相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...
- python 基础网络编程1
python 基础网络编程1 Source code: Lib/socketserver.py lib的主目录下有一个sockserver.py文件, 里面是python基本的网络编程模型 共有一个b ...
- Java基础——网络编程(一)
本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录, ...
- 网络编程中TCP基础巩固以及Linux打开的文件过多文件句柄的总结
1.TCP连接(短链接和长连接) 什么是TCP连接?TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 当网络通信 ...
- python-socket编程(入门,网络基础)
一.网络基础 网络建立的目的是为了数据交互(通信) 如何实现通信: 1.建立好底层的物理连接介质 2.有一套统一的通信标准,称之为互联网协议 1.osi七层协议 互联网协议按照功能的不同分为osi七层 ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- 总结day23 ---- 网络编程,以及计算机基础概念
计算机网络的发展及基础网络概念 问题:网络到底是什么?计算机之间是如何通信的? 早期 : 联机 以太网 : 局域网与交换机 广播 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无 ...
- python 基础网络编程2
python 基础网络编程2 前一篇讲了socketserver.py中BaseServer类, 下面介绍下TCPServer和UDPServer class TCPServer(BaseServer ...
- winsock编程WSAEventSelect模型
winsock编程WSAEventSelect模型 WSAEventSelect模型和WSAAsyncSelec模型类似,都是用调用WSAXXXXXSelec函数将socket和事件关联并注册到系统, ...
随机推荐
- ubuntu系统检测端口占用情况
参考链接: https://blog.csdn.net/qwfys200/article/details/80837036 命令: $ sudo netstat -tupln
- TopN案例
准备三份数据 t1 2067 t2 2055 t3 2055 t4 1200 t5 2367 t6 255 t7 2555 t8 12100 t9 20647 t10 245 t11 205 t12 ...
- python中hasattr()、getattr()、setattr()函数的使用
1. hasattr(object, name) 判断object对象中是否存在name属性,当然对于python的对象而言,属性包含变量和方法:有则返回True,没有则返回False:需要注意的是n ...
- 设计模式 — 简单工厂模式(staticFactory)
这篇博文介绍简单工厂模式,设计模式并不是固定的二十三种,不同的书介绍的可能有出入,这篇介绍的简单工厂模式在有些书上就忽略不介绍了.设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验 ...
- javascript封装函数入门
封装函数的入门 一.使用函数有两步: 1.定义函数,又叫声明函数, 封装函数. 定义函数的三个要素:功能,参数,返回值. function 函数名(形参){ 函数代码 return 结果} //2.调 ...
- Angular 项目列表页
$ ng g m project 功能:项目列表显示,增加,修改,删除项目.邀请其它人员加入项目. 单一性原则:希望搭建多个组件,每个组件负责自己的功能. 一.project相关组件 $ ng g c ...
- jq实现遮罩等待转圈
function Show_TopDiv(msg,msg_Width,msg_Height) { var titleheight = "22px"; // 提示窗口标题高度 var ...
- sqlserver2008 触发器备份 20170811
-------------触发器-----------------------------------------------base-----NO if (object_id('trigger_JP ...
- SpringBoot-目录及说明
今天开始抽时间整理SpringBoot的内容这里可以作为一个目录及说明相关的资料都可以跳转使用 说明: 目录: 一:创建SpringBoot项目 1)Maven创建 (1)使用命令行创建Maven工程 ...
- JAVA注释--2019-04-28
一.JAVA自带注解 1.@Override:覆盖父类方法 2.@Deprecated:不建议使用(就是方法上画一条横线划掉那种) 3.@SuppressWarnings:去掉警告:使用方法:@Sup ...