-- 作者:hunanwl
-- 发布时间:2014/9/18 22:28:00
-- 甜甜老师 获取北京时间代码 有问题
改一下,增加成功率 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() Dim str1 As String Dim count As Integer = 0 Do 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 str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead) count += 1 Loop While count < 10 AndAlso str1 Is Nothing Dim sp As Char() = New Char(0) {} sp(0) = " "c Dim dt As System.DateTime = New DateTime() Dim s As String() s = str1.Split(sp) dt = System.DateTime.Parse(s(1) & " " & s(2)) \'得到标准时间 dt = dt.AddHours(8) \'得到北京时间 Messagebox.show( dt)
|
看附件
点击获取标准北京时间,上面的标签控件就会显示即使的北京时间 但是多运行几次就会出错啊 说是索引超出数组界限啊
在狐表中是这样
让后我转到vs中 也是这样
甜甜老师 再看下你的代码是什么问题
|
-- 作者:有点甜
-- 发布时间:2014/9/18 22:34:00
--
网络问题,已经写带尝试去连接10次了。
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() Dim str1 As String Dim count As Integer = 0 Do 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 str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead) count += 1 Loop While count < 10 AndAlso str1 Is Nothing If str1 Is Nothing Then msgbox("网络繁忙,请稍后再试") Else Dim sp As Char() = New Char(0) {} sp(0) = " "c Dim dt As System.DateTime = New DateTime() Dim s As String() s = str1.Split(sp) dt = System.DateTime.Parse(s(1) & " " & s(2)) \'得到标准时间 dt = dt.AddHours(8) \'得到北京时间 Messagebox.show( dt) End If
|
-- 作者:有点甜
-- 发布时间:2014/9/19 11:24:00
--
回复5楼
1、不要经常调用
2、加入判断
Dim 时间服务器 As String(,) = New String(13, 1) {} Dim 搜索顺序 As Integer() = New Integer() {3, 2, 4, 8, 9, 6, _ 11, 5, 10, 0, 1, 7, _ 12} 时间服务器(0, 0) = "time-a.nist.gov" 时间服务器(0, 1) = "129.6.15.28" 时间服务器(1, 0) = "time-b.nist.gov" 时间服务器(1, 1) = "129.6.15.29" 时间服务器(2, 0) = "time-a.timefreq.bldrdoc.gov" 时间服务器(2, 1) = "132.163.4.101" 时间服务器(3, 0) = "time-b.timefreq.bldrdoc.gov" 时间服务器(3, 1) = "132.163.4.102" 时间服务器(4, 0) = "time-c.timefreq.bldrdoc.gov" 时间服务器(4, 1) = "132.163.4.103" 时间服务器(5, 0) = "utcnist.colorado.edu" 时间服务器(5, 1) = "128.138.140.44" 时间服务器(6, 0) = "time.nist.gov" 时间服务器(6, 1) = "192.43.244.18" 时间服务器(7, 0) = "time-nw.nist.gov" 时间服务器(7, 1) = "131.107.1.10" 时间服务器(8, 0) = "nist1.symmetricom.com" 时间服务器(8, 1) = "69.25.96.13" 时间服务器(9, 0) = "nist1-dc.glassey.com" 时间服务器(9, 1) = "216.200.93.8" 时间服务器(10, 0) = "nist1-ny.glassey.com" 时间服务器(10, 1) = "208.184.49.9" 时间服务器(11, 0) = "nist1-sj.glassey.com" 时间服务器(11, 1) = "207.126.98.204" 时间服务器(12, 0) = "nist1.aol-ca.truetime.com" 时间服务器(12, 1) = "207.200.81.113" 时间服务器(13, 0) = "nist1.aol-va.truetime.com" 时间服务器(13, 1) = "64.236.96.53"
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() Dim str1 As String Dim count As Integer = 0 Do For i As Integer = 0 To 12 hostName = 时间服务器(搜索顺序(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 str1 = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead) count += 1 Loop While count < 10 AndAlso str1 Is Nothing If str1 Is Nothing Then msgbox("网络繁忙,请稍后再试") Else Dim sp As Char() = New Char(0) {} sp(0) = " "c Dim dt As System.DateTime = New DateTime() Dim s As String() s = str1.Split(sp) dt = System.DateTime.Parse(s(1) & " " & s(2)) \'得到标准时间 dt = dt.AddHours(8) \'得到北京时间 Messagebox.show( dt) End If
|
-- 作者:hunanwl
-- 发布时间:2014/9/19 15:49:00
--
问题解决了
Dim 搜索顺序 As Integer() = New Integer() {3, 2, 4, 8, 9, 6, _ 11, 5, 10, 0, 1, 7, _ 12}
这个是什么意思呢 为什么有一横杠呢 是上下行连接符号码 还有 为什么没有13 呢
服务器有13啊
时间服务器(13, 0) = "nist1.aol-va.truetime.com" 时间服务器(13, 1) = "64.236.96.53"
[此贴子已经被作者于2014-9-19 15:49:57编辑过]
|
-- 作者:有点甜
-- 发布时间:2014/9/19 15:57:00
--
可以随便指定,根据实际情况排序即可
Dim 搜索顺序 As Integer() = New Integer() {3, 2, 4, 8, 9, 6, 11, 5, 10, 0, 1, 7, 12, 13}
|