weeks1 发表于 2010-1-17 08:30:41

关于TcpNameToIP把域名转换成IP的问题

这是时间同步的AU3程序如下:
#Include <Date.au3>
_timesync()
Func _timesync() ;时间同步函数
        $TimeZone = 8 * 60 * 60
        UDPStartup()
        $socket = UDPOpen(TCPNameToIP("210.72.145.8"), 123);TcpNameToIP把域名转换成IP.
        $pac = "1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        $status = UDPSend($socket, Chr(Dec(StringLeft($pac, 2))))
        If @error <> 0 Then Return
        If $status = 0 Then Return
        $data = ""
        $i = 0
        While $data = ""
                $i += 1
                $data = UDPRecv($socket, 100)
                If $i = 5 Then Return
                Sleep(100)
        WEnd
        UDPCloseSocket($socket)
        UDPShutdown()
        $unsignedHexValue = StringMid($data, 83, 8); Extract time from packet. Disregards the fractional second.
        $ones = StringRight($unsignedHexValue, 1)
        $n = StringTrimRight($unsignedHexValue, 1)
        $value = Dec($n) * 16 + Dec($ones)
        $value = $value + $TimeZone
        $UTC = _DateAdd("s", $value, "1900/01/01 00:00:00")
        $localtime = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC
        $iDateCalc = _DateDiff('s', $UTC, $localtime)
        $var1 = StringSplit(StringLeft($UTC, 10), '/')
        $var2 = StringSplit(StringRight($UTC, 8), ':')
        _SetTime($var2, $var2, $var2)
        _SetDate($var1, $var1, $var1)
        If $iDateCalc > "60" Or $iDateCalc < "-" & "60" Then
                MsgBox(64, "时间已同步", "本地时间和国际标准时间存在误差,已同步!" & @CRLF & "本机时间:" & $localtime & @CRLF & "标准时间:" & $UTC & @CRLF & "时间差距:" & $iDateCalc & "秒")
        EndIf
EndFunc   ;==>_timesync
问题来了
请问大侠
TcpNameToIP把域名转换成IP
我把 210.72.145.8
换成 210.72.145.44国家授时中心服务器的IP地址
就无法使用了
请指导

C.L 发表于 2010-1-17 15:11:28

TcpNameToIP 不是这样用的吧?有IP地址了何必再用这个?

TCPNameToIP ( 域名 )这样是把域名转换成IP地址

yq314 发表于 2010-1-17 23:02:55

你都知道是域名转ip了,你直接给它个ip那还转啥?
UDPOpen(210.72.145.8, 123)就好了,TCPNameToIP()都用不上
页: [1]
查看完整版本: 关于TcpNameToIP把域名转换成IP的问题