基本上,我们需要大量(100多个)远程嵌入式设备来传输数据。
我可以使用以下代码连接到任何单个远程主机:
require 'socket'
socket = TCPSocket.new '192.168.1.115', 8016
loop do
socket.write("GET_DATA")
data = socket.read(32)
end
s.close
但我想立刻联系其中许多人。有推荐的方法吗?
答案 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时才执行实际线程。