北京时间同步器
最近考虑到一个客户端与服务器时间同步的问题,所以就想到了这个北京时间同步器,静默参数为 /S当然还可以用NET TIME来实现,本工具主要还是给那些像本人一样懒得手动调整时间的童鞋使用。
带代码吗?能否选择更新源? 最好有有源码,学习一下
华军网上用Au3编写的北京时间校正器 额,下载使用,爽一爽。 我就是传说中的懒人 需要改进以下,同步后还是慢以秒哦,你可以加上一秒后再修改本地时间。 好东西,不知道有没有源码! 这个坛子里很早就有了 NTP时间同步
#include "CoProc.au3"
#Include <Misc.au3>
#include <Date.au3>
$ntpServer = "ntp.api.bz" ;改为其它NTP服务器地址
local $var1,$var2
;Global Const $tagSYSTEMTIME = "short Year;short Month;short Dow;short Day;short Hour;short Minute;short Second;short MSeconds"
;Global Const $tagTIME_ZONE_INFORMATION = "dword Bias;byte StdName;ushort StdDate;dword StdBias;byte DayName;ushort DayDate;dword DayBias"
dim $TimeZone=8*60*60
UDPStartup()
Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
If @error <> 0 Then
MsgBox(0,"","连接服务器失败!")
Exit
EndIf
;$status = UDPSend($socket, MakePacket("1b0e010000000000000000004c4f434ccb1eea7b866665cb00000000000000000000000000000000cb1eea7b866665cb"))
$status = UDPSend($socket, MakePacket("1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
If $status = 0 Then
MsgBox(4096, "错误", "连接服务器失败,请查看网络连接!")
EndIf
$data=""
$i=0
While $data=""
$i+=1
$data = UDPRecv($socket, 100)
If $i = 5 Then
MsgBox(4096, "错误", "连接服务器失败,请更换服务器地址!")
Exit
EndIf
sleep(100)
WEnd
UDPCloseSocket($socket)
UDPShutdown()
$unsignedHexValue=StringMid($data,83,8); Extract time from packet. Disregards the fractional second.
$value=UnsignedHexToDec($unsignedHexValue)
$value=$value+$TimeZone
$UTC=_DateAdd("s",$value,"1900/01/01 00:00:00")
$var1=StringSplit(StringLeft($UTC,10),'/')
$var2=StringSplit(StringRight($UTC,8),':')
_SetTime($var2,$var2,$var2)
_SetDate($var1,$var1,$var1)
;MsgBox(0,"提示","NTP服务器时间同步成功,当前系统时间为: "&$UTC)
Func MakePacket($d)
Local $p=""
While $d
$p&=Chr(Dec(StringLeft($d,2)))
$d=StringTrimLeft($d,2)
WEnd
Return $p
EndFunc
Func UnsignedHexToDec($n)
$ones=StringRight($n,1)
$n=StringTrimRight($n,1)
Return dec($n)*16+dec($ones)
EndFunc
谢谢楼上发布源码,不过好像少了一个文件哦。。。#include "CoProc.au3" 試了一下 win7 好像沒有用 感觉不怎么好用 来看看,新手学习一下。 Y的很多UDF都要自己去找,能写UDF的都是高手啊。。。这个同步软件很有用啊 先看看再说吧,谢谢