找回密码
 加入
搜索
查看: 2340|回复: 5

[AU3基础] 求(时间同步)源码

  [复制链接]
发表于 2010-9-14 15:39:26 | 显示全部楼层 |阅读模式
看到了(hearton )兄弟发的。北京时间同步器,感觉很不错。 可惜他没有放出源码。

http://www.autoitx.com/forum.php ... 1%BC%E4%CD%AC%B2%BD

希望各位能提供下。

真的很希望得到,如果兄弟有需要也可以用QB做答谢。
发表于 2010-9-14 17:36:02 | 显示全部楼层
如果你是为使用,有很多软件也可以做的,以前我就用过一个,可以选择同步的时间服务器地址,只要是NTP服务器就可以。

如果你是为写,建议搜索一些网络相关的开源例子。
发表于 2010-9-14 19:16:34 | 显示全部楼层
本帖最后由 shenrenba 于 2010-9-14 19:32 编辑

我自己用的 没看你那个什么界面

#NoTrayIcon
#include <Date.au3>
#include <Misc.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("WinTitleMatchMode", 2);标题的任意子串皆可匹配
Opt("GUICloseOnESC", 0);在按下 ESC 时不退出

If _Singleton(@ScriptName, 1) = 0 Then
        MsgBox(16, "警告", "该程序已经运行,禁止重复运行!", 5)
        Exit
EndIf

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("时间校准器", 200, 100)
$Button1 = GUICtrlCreateButton("校准", 50, 25, 100, 50)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $Button1
                        GUICtrlSetState($Button1,$GUI_DISABLE)
                        $_Now_date = _GetSrv_Date()
                        $_Now_Splt = StringSplit($_Now_date, " ")
                        $NowData = StringSplit($_Now_Splt[1], "-")
                        $NowTime = StringSplit($_Now_Splt[2], ":")
                        _SetDate($NowData[3], $NowData[2], $NowData[1])
                        _SetTime($NowTime[1], $NowTime[2], $NowTime[3])
                        GUICtrlSetState($Button1,$GUI_ENABLE)
                        MsgBox(64, "提示", "时间校准完成!", 5)
        EndSwitch
WEnd
Func _GetSrv_Date()
        Local $_Srvlist[14] = ["time-nw.nist.gov", _
                        "time-a.nist.gov", _
                        "time-b.nist.gov", _
                        "time-a.timefreq.bldrdoc.gov", _
                        "time-b.timefreq.bldrdoc.gov", _
                        "time-c.timefreq.bldrdoc.gov", _
                        "utcnist.colorado.edu", _
                        "time.nist.gov", _
                        "nist1.datum.com", _
                        "nist1.dc.glassey.com", _
                        "nist1.ny.glassey.com", _
                        "nist1.sj.glassey.com", _
                        "nist1.aol-ca.truetime.com", _
                        "nist1.aol-va.truetime.com"]
        UDPStartup()
        Local $_Time_Srv
        For $x = 0 To UBound($_Srvlist) - 1
                $_Time_Srv = $_Srvlist[$x]
                Local $Socket = UDPOpen(TCPNameToIP($_Time_Srv), 123)
                If @error <> 0 Then ContinueLoop
                $Status = UDPSend($Socket, MakePacket())
                If $Status = 0 Then ContinueLoop
                Local $Data = "", $i = 0
                While $Data = ""
                        $i += 1
                        $Data = UDPRecv($Socket, 100)
                        If $i = 5 Then ContinueLoop (2)
                        Sleep(88)
                WEnd
                UDPCloseSocket($Socket)
                UDPShutdown()
                ExitLoop
        Next
        If $Data = "" Then Return 0
        $Data = UnsignedHexToDec(StringMid($Data, 83, 8))
        $Data = _DateTimeFormat(_DateAdd("s", $Data, "1900/01/01 08:00:00"), 0)
        Return $Data
EndFunc   ;==>_GetSrv_Date

Func MakePacket()
        Local $P, $D = "1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        While $D
                $P &= Chr(Dec(StringLeft($D, 2)))
                $D = StringTrimLeft($D, 2)
        WEnd
        Return $P
EndFunc   ;==>MakePacket

Func UnsignedHexToDec($_Data)
        Return Dec(StringTrimRight($_Data, 1)) * 16 + Dec(StringRight($_Data, 1))
EndFunc   ;==>UnsignedHexToDec

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-9-14 19:33:44 | 显示全部楼层
感谢3楼分享
发表于 2010-9-15 22:27:10 | 显示全部楼层
很实用的代码,比获取网页时间好用。。
发表于 2010-9-16 15:26:51 | 显示全部楼层
很实用的代码.时间准确~!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 20:38 , Processed in 0.082214 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表