许多客户端连接Ruby

时间:2013-03-12 16:11:21

标签: ruby

基本上,我们需要大量(100多个)远程嵌入式设备来传输数据。

我可以使用以下代码连接到任何单个远程主机:

require 'socket'

socket = TCPSocket.new '192.168.1.115', 8016

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

s.close

但我想立刻联系其中许多人。有推荐的方法吗?

1 个答案:

答案 0 :(得分: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&gt; = 1.9,MRI ruby​​&lt; 1.9(标准ruby)线程实现模拟线程(green threads),并且仅在一个线程等待I / O时才执行实际线程。