向NTP服务器发送特定报文,即可收到回复,不考虑传输延迟的话,解析时间很简单。<p></p><p>
</p><p>测试可用的NTP服务器:<span style="color: rgb(255, 102, 102);">202.120.2.101 端口:123</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">例如发送的报文:(48字节)</span></p><p></p>1b 00 04 fa 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">收到的回复是:(48字节)</span></p><p><span style="color: rgb(255, 102, 102);">1C 03 04 E9 00 00 0A 07 00 00 0E 04 CA 76 01 82 D9 FD 82 DE 62 51 F1 C6 00 00 00 00 00 00 00 00 D9 FD 84 95 94 F8 59 7C D9 FD 84 95 94 FB 59 E1
</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">然后就可以根据协议解析时间了。</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">上图用网络调试助手发送和接收</span></p><p><span style="color: rgb(255, 102, 102);">
</span></p><p><span style="color: rgb(255, 102, 102);">vc下可以用以下代码:</span></p>
#include <stdio.h>
#include "winsock2.h"
#include <time.h>
#include <conio.h>
#pragma comment (lib,"ws2_32.lib")//连入库文件
//******************************//
// 定义一个结构,就是NTP包的结构//
//******************************//
/*NTP 消息的格式被显示如下。
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-&#