注册 登录
编程论坛 VB6论坛

无法获取ntp时间,如何解决?

yuma 发布于 2023-03-21 13:51, 885 次点击
程序代码:
Private Sub Command1_Click()
    '连接NTP服务器
    Dim ntpServer As String
    ntpServer = "pool." '可以替换为其他NTP服务器地址
    Winsock1.RemoteHost = ntpServer
    Winsock1.RemotePort = 123
    Winsock1.Connect
   
    '发送NTP请求
    Dim request(47) As Byte
    request(0) = &H1B
    Winsock1.SendData request, 48, 0
   
    '等待NTP响应
    Do While Winsock1.State <> sckClosed
        DoEvents
    Loop
   
    '解析NTP响应
    Dim response(47) As Byte
    Winsock1.GetData response, vbArray + vbBinary
    Dim seconds As Long
    seconds = CLng(response(40)) * 2 ^ 24 + CLng(response(41)) * 2 ^ 16 + CLng(response(42)) * 2 ^ 8 + CLng(response(43))
    Dim ntpTime As Date
    ntpTime = DateAdd("s", seconds - 2208988800#, "1/1/1900")
   
    '显示NTP时间
    MsgBox "NTP时间:" & ntpTime
End Sub
2 回复
#2
阳光上的桥2023-03-22 11:06
F8一行一行的执行程序,看看在哪里遇到问题,每一行执行后看看相关变量的值,是否符合预期。
#3
apull2023-03-22 11:15
Connect后判断下连接状态,再发送数据。
1