Ruby on rails s.recvfrom_nonblock(65536)[0]在此代码段中做什么

Ruby on rails s.recvfrom_nonblock(65536)[0]在此代码段中做什么,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,嗨,有人能解释一下我检查过的下面代码段中的s.recvfrom_nonblock(65536)[0]是什么意思,但对我来说没有意义 require 'socket' s = UDPSocket.new s.bind('127.0.0.1', 8100) while true do begin line = s.recvfrom_nonblock(65536)[0] puts line if line.include?('test1') || line.includ

嗨,有人能解释一下我检查过的下面代码段中的s.recvfrom_nonblock(65536)[0]是什么意思,但对我来说没有意义

require 'socket'

s = UDPSocket.new

s.bind('127.0.0.1', 8100)
while true do
  begin
    line = s.recvfrom_nonblock(65536)[0]
        puts line if line.include?('test1') || line.include?('test2') || line.include?('somestring')
  rescue IO::WaitReadable
    IO.select([s])
    retry
  end
end
#recvfrom_nonblock
将从udpsocket接收数据,并返回有关该数据的一组信息。提供的参数(65536)是从消息接受的最大字节数,返回数组的索引0包含实际的“消息”

简而言之,您的代码段通过recvfrom_nonblock通过端口8100接受多达65536字节的数据。recvfrom_nonblock方法将返回一个信息数组,但此代码段所关心的只是该数组的索引0,它包含要传递的文本,并将其保存到
变量中


如果查看,代码中会有一条注释,说明数组输出的样子。

您还可以分解返回的数组:
line,addr=s.recvfrom_nonblock(65536)