首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到ntp时间服务器时遇到困难

连接到ntp时间服务器时遇到困难
EN

Stack Overflow用户
提问于 2013-10-30 13:22:30
回答 1查看 1.1K关注 0票数 3

我试图使用以下代码连接到时间服务器并获得时间,但没有成功:

代码语言:javascript
复制
Dim ntpServer As String = "time.windows.com"
Dim ntpData(47) As Byte
Dim addresses = Dns.GetHostEntry(ntpServer).AddressList
Dim EndP As IPEndPoint = New IPEndPoint(addresses(0), 123)

Dim soc As Socket = New Socket(AddressFamily.InterNetwork, _ 
      SocketType.Dgram, ProtocolType.Udp)

soc.Connect(EndP)
soc.Send(ntpData)
soc.Receive(ntpData)

soc.Close()

通过程序进行跟踪,我无法通过下面的代码行soc.Receive(ntpData)。我做错了什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-30 16:13:54

您需要向服务器提供一些基本信息:

ntpData(0) = 27

ntpData(0)包含一个名为firstByteBits的节。

本节需要在发送数据以查询答复之前设置。

第一个字节是

代码语言:javascript
复制
 0 1 2 3 4 5 6 7 
+-+-+-+-+-+-+-+-+
|LI | VN  |Mode |
  • LI = leap指示器(发送的数据为0)
  • VN =版本号(3,位3和4集)
  • 模式=模式(客户端模式= 3,位6和7集)

00011011 = 27 = 0x1B

可能还有更好的NTP服务器。众所周知,time.windows.com:123服务器池速度慢,有时有一段时间没有响应,而且精度很低。更好的是:pool.ntp.org:123 (但请阅读poo.ntp.org上关于常规使用的内容)。

有关更多细节,请参见RFC 5905

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19683452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档