获取不到网络时间,请大家帮忙看看代码,谢谢
如题,大侠们帮我看看,怎么获取不到网络时间,谢谢!代码如下:
'定义全局变量vTime,存放从服务器获得的时间
Dim vTime As String
'从网络时间服务器获得标准时间
Private Sub Command1_Click()
If Winsock1.State <> sckClosed Then
Winsock1.Close '如果不是则关闭连接
End If
'设置远程时间服务器地址以及端口
Winsock1.RemoteHost = "tick.usno.navy.mil" '美国海军天文台
Winsock1.RemotePort = 13
Winsock1.Connect '连接远程服务器
End Sub
'设置系统时间
Private Sub Command2_Click()
Dim sTime As Date '定义局部变量sTime
'从服务器返回的字符中取出时间,由于是格林尼治时间所以要加8
sTime = LTrim$(Str$(Val(Mid$(vTime, 12, 2)) + 8) & Mid$(vTime, 14, 6))
Text1.Text = sTime '显示转换后的时间
'Time = sTime '设置系统时间
End Sub
'当服务器返回数据时执行
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData vTime '将服务器返回的时间存入vTime
Text1.Text = vTime '在文本框中显示时间
End Sub
'获得时间后关闭当前连接
Private Sub Winsock1_Close()
Winsock1.Close
End Sub
winsock 网络时间 --------------------编程问答-------------------- 域名组织
time.nist.gov NIST
tick.usno.navy.mil 美国海军天文台
clock.sgi.com SGI
tick.mit.edu 麻省理工学院
(MIT)
ntp1.uk.uu.net 剑桥大学
usno.pa-x.dec.com Compaq
ntp-cup.external.hp.com HP --------------------编程问答-------------------- 我换了好几个都不行,不知为什么 --------------------编程问答-------------------- 用这个获取,对方1个 hook就全改了,想办法用其他协议获取吧 --------------------编程问答--------------------
你有什么好的推荐吗?谢谢了! --------------------编程问答-------------------- 既然用winsock,为什么不发送一个随便的数据包,然后从返回的包头里面截获服务器时间呢?
(即使你发送一个错误包,服务器会返回一个错误,其包头里面就含有服务器时间…秒级精度还是有的…) --------------------编程问答-------------------- 除 --------------------编程问答--------------------
我还真不知道如何写这个程序,请高手支招,谢谢!!! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- Function GetInternetDate() As String
On Error Resume Next
Dim objXML As Object, strTemp$, netDate As Date, netTime As Date
Set objXML = CreateObject("WinHttp.WinHttpRequest.5.1")
With objXML
.Option(6) = 0
.Open "GET", "http://www.timedate.cn/worldclock/ti.asp?CFG", False
.setRequestHeader "Connection", "Keep-Alive"
.send
strTemp = .responseText
End With
Dim nYear$, nMonth$, nday$, nHrs$, nMin$, nSec$
nYear = Val(Split(Split(strTemp, "nyear=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
nMonth = Val(Split(Split(strTemp, "nmonth=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
nday = Val(Split(Split(strTemp, "nday=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
nHrs = Val(Split(Split(strTemp, "nhrs=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
nMin = Val(Split(Split(strTemp, "nmin=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
nSec = Val(Split(Split(strTemp, "nsec=", -1, vbTextCompare)(1), ";", -1, vbTextCompare)(0))
netDate = DateSerial(nYear, nMonth, nday)
netTime = TimeSerial(nHrs, nMin, nSec)
If nYear = 0 Then
GetInternetDate = ""
Else
GetInternetDate = CDate(netDate + netTime)
End If
End Function --------------------编程问答--------------------
这样不准的。。。。。。。。。。以前用过,被害惨了 --------------------编程问答-------------------- 哪个服务器那么易做图?说出来我试试。
该不是不会转换时区吧? --------------------编程问答-------------------- 顶!支持~~~~~~~~~ --------------------编程问答--------------------
转换时区???呵呵,你就懂这些吗?这些我都知道哦! --------------------编程问答-------------------- 无测试无易做图……俺就会点时区转换之类的,不要笑话俺 --------------------编程问答-------------------- net time /set --------------------编程问答-------------------- 除
补充:VB , 网络编程