如果真 (是否为空 (超时值 ))  超时值 = 3000 如果真 (是否为空 (端口 ))  端口 = 123 如果真 (是否为空 (NTP服务器 ))  NTP服务器 = “216.171.120.36”取系统时间_ (时间1)udp. 发送 (NTP服务器, 端口, 字节集还原 (“1B000000000000000000000000000000000000000000000000000000000000000000000000000000”) + 系统时间到网络字节集 (时间1 )) 收到数据 = udp. 接收 (超时值 )取系统时间_ (时间4 ) 如果真 (取字节集长度 (收到数据 ) < 10 ) 返回 (0 )时间2 = 网络字节集到系统时间 (取字节集中间 (收到数据, 33, 8))时间3 = 网络字节集到系统时间 (取字节集中间 (收到数据, 41, 8 )) d1 = 取时间相差 (时间4, 时间1 )d2 = 取时间相差 (时间3, 时间2 )差值 = (d1 - d2 ) ÷ 2 时间3 = 增减系统时间 (时间3, 差值 )差值 = 取时间相差 (时间3, 时间4 )返回 (差值 )
从此告别取网页时间
源码从最底层的连接协议开始,一直到高级应用,只依赖于系统核心支持库和windows自带API
从头到脚的绿色
附赠UDP数据报客户Duan,支持设置接收超时
补充内容 (2017-7-31 08:10):
说访问不了的同学请注意,既然是网络对时,那么肯定是要访问NTP服务器的,例子里给出的是微软的NTP服务器,有时候是不能用的,这就跟我们在windows操作系统里同步时间偶尔会失败一样,大家既然是学习源码,想必也多少有点解决问题的能力,而不是纯粹的拿来主义,连个百度都不愿意搜一下,国内很多好用的NTP服务器,大家可以去找一下,现在给大推荐一个阿里云的对时服务器:ntp5.aliyun.com,这个是比较稳定的,这个网址转化为IP后就可以用了 |