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​​)线程实现模拟线程(绿色线程),并且仅在一个线程等待 I/O 时才进行真正的线程.

于 2013-03-12T16:33:05.973 回答