有没有办法可以在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)
并且在收到数据之前我无法运行更多代码。
答案 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