0

有没有一种方法可以在 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)

在它接收到数据之前,我无法运行更多代码。

4

1 回答 1

1

您可以启动多个线程。

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
于 2013-09-30T09:10:05.730 回答