【问题标题】:Can I receive data using multiple UDP Ports in Ruby?我可以在 Ruby 中使用多个 UDP 端口接收数据吗?
【发布时间】:2013-09-30 04:05:37
【问题描述】:

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

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

【问题讨论】:

    标签: ruby udp port


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2017-12-24
      • 1970-01-01
      • 2014-03-02
      • 2015-02-08
      • 1970-01-01
      • 2011-09-03
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多