C语言也能干大事第十二节(如鹏基础)

来源:互联网 发布:办公软件word2007 编辑:程序博客网 时间:2024/06/06 08:00

一、复习:
复述QQ的基本原理;在一个典型的网络程序中分为哪两端?
IP地址、域名、DNS、端口是做什么用的?
演示一个简单的和网易Email服务器对话的过程。
SocketWindows特有的吗?什么是WinSock
WinSockSocket标准的区别和联系。
Windows中函数的错误信息是通过什么来报告的?
创建客户端到服务器端的Socket连接的时候需要指定服务器端的端口吗?为什么?需要指定客户端的端口吗?为什么?客户端不用显式指定端口,但并不是说不需要端口,而是这个端口是由操作系统分配的。
有一个端口能同时被多个程序占用吗?
发送、接收数据各用什么函数?

二、开发网络定时器

1、看看Windows的网络授时功能(客户端)

2、网络授时原理

客户端连接到授时服务器上,授时服务器会马上将当前时间发送给客户端,原理很简单。

网络授时分为好几种协议,比如返回的是日期字符串,有的返回的是自190011日至今的秒数。“2009-03-08 22:13:58”、39393933993

扩展阅读:http://zhidao.baidu.com/question/20121991.html 

2、国家授时中心提供的网络授时返回的是自190011日至今的秒数。

3、先移植第一节课的代码

可供选择的授时服务器(不止这些):

 www.time.ac.cn
国家授时中心

Clock.sgi.com
SGI

Tick.mit.edu
麻省理工学院

Time.nist.gov

NIST


Compile:编译

Link:连接

编译是单一的文件编译成.o.obj文件,然后Link.obj连接成.exe

Link库!!!!

一通百通的力量!!!!!!!!!!!!!!

C-FreeVC没有任何差别!!!!!!!!!!!!

小技巧:在命令提示符下不能CtrlCCtrlV,但是选中后点右键就是复制、粘贴

4、
授时服务器是37端口IPPORT_TIMESERVER。返回的是什么?

unsigned long ulTime;


recv(sock,(char *)&ulTime,sizeof(unsigned long),0);





深刻理解这段代码的含义


ulTime = ntohl(ulTime);

网络字节顺序转换为主机字节顺序。这个是重点,很多公司面试的时候都会问这个,以后工作中也会遇到。

什么是网络字节顺序、什么是主机字节顺序。

不同的CPU中处理整数的方式不一样,有的是低位在前、有的是高位在前。计算机组成原理、数字电路。。。

网络字节顺序则是统一标准。

如果直接接收的话就会造成接受者接收的数据正好是相反的。

扩展阅读:http://hi.baidu.com/cdmember_daihw/blog/item/ad83090f1fb4ffebab6457e6.html 


中国是东8区。猜的:时间服务器返回的是格林尼治时间。


Windows中时间用SYSTEMTIME结构体表示时间,怎么将ulTime转换为SYSTEMTIME?网上找到下面的代码:

#define HIGHTIME
21968699 // 21968708 // Jan 1, 1900 FILETIME.highTime

#define LOWTIME
4259332096 // 1604626432 // Jan 1, 1900 FILETIME.lowtime

SYSTEMTIME st;

UINT64 uiCurTime, uiBaseTime, uiResult;

uiBaseTime = ((UINT64) HIGHTIME << 32) + LOWTIME;

uiCurTime = (UINT64)dwTime * (UINT64)10000000;

uiResult = uiBaseTime + uiCurTime;

FileTimeToSystemTime((LPFILETIME)&uiResult, &st);

把它封装成函数,怎么设计接口?深刻理解指针以及WindowsLP的惯例。

把时间打印出来,怎么打印??????

怎么时间不对

设置系统时间

//SetSystemTime(&st);

作业:定时的进行网络对视。SetTimer函数,1分钟对时一次。时钟。