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