向NTP发送UDP数据包以获取数据包(在ruby中)

向NTP发送UDP数据包以获取数据包(在ruby中),ruby,udp,ntp,Ruby,Udp,Ntp,我需要做的是: 发送一个数据包到pool.ntp.org(我假设我自动得到一个数据包) 以下这些对我来说根本不起作用。我不知道我在做什么,所以现在如果我能找到地址并取回包裹,我会很满意。下面的代码只是挂起。任何和所有的帮助都将不胜感激 require 'socket' sock = UDPSocket.new sock.connect("pool.ntp.org", 123) sock.recvfrom(10) 各国: 这意味着您可以使用send(mesg,flags)形式的send,仅此而已

我需要做的是: 发送一个数据包到pool.ntp.org(我假设我自动得到一个数据包)

以下这些对我来说根本不起作用。我不知道我在做什么,所以现在如果我能找到地址并取回包裹,我会很满意。下面的代码只是挂起。任何和所有的帮助都将不胜感激

require 'socket'
sock = UDPSocket.new
sock.connect("pool.ntp.org", 123)
sock.recvfrom(10)
各国:

这意味着您可以使用
send(mesg,flags)
形式的
send
,仅此而已。您需要向NTP服务器发送请求消息以获得回复

您可以在此处看到NTPv4协议规范:

状态:

这意味着您可以使用
send(mesg,flags)
形式的
send
,仅此而已。您需要向NTP服务器发送请求消息以获得回复


您可以在这里看到NTPv4协议规范:

这是否意味着我需要使用bind(主机、端口)?“sock.bind(“pool.ntp.org”,123)”给了我“无法分配请求的地址”错误。我需要将套接字绑定到该地址,以便从这里发送/接收?不,
bind()
用于将套接字绑定到本地端口/接口,以便您要发送的数据包来自特定接口和/或端口。因此,您可以像最初那样使用
connect()
,但您需要先
send()
一个请求,才能
receive()
任何回复是否意味着我需要使用bind(主机、端口)?“sock.bind(“pool.ntp.org”,123)”给了我“无法分配请求的地址”错误。我需要将套接字绑定到该地址,以便从这里发送/接收?不,
bind()
用于将套接字绑定到本地端口/接口,以便您要发送的数据包来自特定接口和/或端口。因此,您可以像最初那样使用
connect()
,但您需要先
send()
一个请求,才能
receive()
任何回复
connect(host, port) 
Connects udpsocket to host:port.

This makes possible to send without destination address.