我可以在Ruby中使用多个UDP端口接收数据吗?

时间:2013-09-30 04:05:37

标签: ruby udp port

有没有办法可以在Ruby中的UDPServer上监听多个端口? 我需要听一些通过多个端口向我发送数据的设备,我需要接收它们并对数据使用相同的操作。

我现在正在使用:

udp_socket = UDPSocket.new
udp_socket.bind( "", 8500 )

while($running) do
    payload, host = udp_socket.recvfrom(1500)
    process payload
end

但代码停在:

payload, host = udp_socket.recvfrom(1500)

并且在收到数据之前我无法运行更多代码。

1 个答案:

答案 0 :(得分:0)

你可以启动多个线程。

require 'thread'

ports = [1500, 1501, 1502]

# Create threads to listen to each port
threads = ports.map do |port|
  Thread.new do
    while($running) do
      payload, host = udp_socket.recvfrom(port)
      process payload
    end
  end
end

# Wait for all threads to complete
threads.map &:join