以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  以下代码 为获取北京 ,在命令状态下,执行此代码 出现三种情况  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=54538)

--  作者:jswjyjf
--  发布时间:2014/7/30 14:06:00
--  以下代码 为获取北京 ,在命令状态下,执行此代码 出现三种情况

以下代码 为获取北京 ,在命令状态下,执行此代码 出现三种情况,1.执行准确 2.无法获取 3。什么也没有显示

 

而且执行时间较长,请指教

 

Dim TimeServers As String(,) = New String(2, 1) {}
TimeServers(0, 0) = "time-b.timefreq.bldrdoc.gov"
TimeServers(0, 1) = "132.163.4.102"
TimeServers(1, 0) = "time-c.timefreq.bldrdoc.gov"
TimeServers(1, 1) = "132.163.4.103"
TimeServers(2, 0) = "utcnist.colorado.edu"
TimeServers(2, 1) = "128.138.140.44"

Dim portNum As Integer = 13
Dim hostName As String
Dim bytes As Byte() = New Byte(1023) {}
Dim bytesRead As Integer = 0
Dim client As New System.Net.Sockets.TcpClient()
For i As Integer = 0 To 2
    hostName = TimeServers(i, 1)
    Try
        client.Connect(hostName, portNum)
        Dim ns As System.Net.Sockets.NetworkStream = client.GetStream()
        bytesRead = ns.Read(bytes, 0, bytes.Length)
        client.Close()
       
        Exit For
    Catch generatedExceptionName As System.Exception
    End Try
Next
Dim sp As Char() = New Char(0) {}
sp(0) = " "c
Dim dt As System.DateTime = New DateTime()
Dim str1 As String
str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead)

If str1 >"" Then
    Dim s As String()
    s = str1.Split(sp)
    dt = System.DateTime.Parse(s(1) & " " & s(2))
    \'得到标准时间
    dt = dt.AddHours(8)
    \'得到北京时间
    Dim getdate As Date
    getdate=dt.Date
    messagebox.show(getdate)
   Else
    messagebox.show("获取时间失败")
End If


--  作者:Bin
--  发布时间:2014/7/30 14:12:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=27052
--  作者:有点甜
--  发布时间:2014/7/30 14:30:00
--  
 有获取不到的可能性,获取时间的网站不是很稳定,但标准时间只能这样获取。
--  作者:Bin
--  发布时间:2014/7/30 14:31:00
--  
判断一下获取的值,获取不到再重新获取一次.