找回密码
 加入
搜索
查看: 20432|回复: 42

[原创] 北京时间同步器

[复制链接]
发表于 2010-8-30 10:02:04 | 显示全部楼层 |阅读模式
最近考虑到一个客户端与服务器时间同步的问题,所以就想到了这个北京时间同步器,静默参数为 /S

当然还可以用NET TIME来实现,本工具主要还是给那些像本人一样懒得手动调整时间的童鞋使用。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 -20 贡献 -4 收起 理由
komaau3 -20 -4 弹出几十个广告 要怎滴

查看全部评分

发表于 2010-8-30 14:45:32 | 显示全部楼层
带代码吗?能否选择更新源?
发表于 2010-9-23 17:28:08 | 显示全部楼层
最好有有源码,学习一下
发表于 2010-9-23 19:30:53 | 显示全部楼层
[/url]


[url=http://www.newhua.com/soft/87177.htm]华军网上用Au3编写的北京时间校正器

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-9-24 00:11:13 | 显示全部楼层
额,下载使用,爽一爽。
发表于 2010-9-24 00:20:41 | 显示全部楼层
我就是传说中的懒人
发表于 2010-9-24 00:23:46 | 显示全部楼层
需要改进以下,同步后还是慢以秒哦,你可以加上一秒后再修改本地时间。
发表于 2011-2-28 12:44:04 | 显示全部楼层
好东西,不知道有没有源码!
发表于 2011-2-28 20:25:40 | 显示全部楼层
这个坛子里很早就有了 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[64];ushort StdDate[8];dword StdBias;byte DayName[64];ushort DayDate[8];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[1],$var2[2],$var2[3])
_SetDate($var1[3],$var1[2],$var1[1])
;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
发表于 2011-3-11 02:03:22 | 显示全部楼层
谢谢楼上发布源码,不过好像少了一个文件哦。。。#include "CoProc.au3"
发表于 2011-4-2 00:31:49 | 显示全部楼层
試了一下 win7 好像沒有用
发表于 2011-6-30 21:01:41 | 显示全部楼层
感觉不怎么好用
发表于 2011-7-17 05:00:10 | 显示全部楼层
来看看,新手学习一下。
发表于 2011-7-17 17:29:29 | 显示全部楼层
Y的很多UDF都要自己去找,能写UDF的都是高手啊。。。这个同步软件很有用啊
发表于 2011-7-31 01:27:38 | 显示全部楼层
先看看再说吧,谢谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 13:25 , Processed in 0.084896 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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