4

基本的に、データをストリーミングする必要がある多数の (100 以上) のリモート組み込みデバイスがあります。

次のコードを使用して、個々のリモート ホストに接続できます。

require 'socket'

socket = TCPSocket.new '192.168.1.115', 8016

loop do
  socket.write("GET_DATA")
  data = socket.read(32)
end

s.close

しかし、私はそれらの多くに一度に接続したい. これを行うための推奨される方法はありますか?

4

1 に答える 1

4

使用スレッド:

ips = ['192.168.1.115', '...', '...']
threads = []

ips.each do |ip|
  threads << Thread.new do
     # Connect here, do some stuff with the socket
  end
end

threads.each { |t| t.join }

実際のスレッドが必要な場合は、Jruby または Ruby >= 1.9 を使用する必要があります。MRI ruby​​ < 1.9 (標準の ruby​​) スレッド実装はスレッドをエミュレートし ( green threads )、1 つのスレッドが I/O を待機している場合にのみ実際のスレッドを実行します。 .

于 2013-03-12T16:33:05.973 に答える