如何使用ruby的net / telnet读取整行?

我正在使用ruby中的net / telnet库来从服务器读取数据。 它在最后用换行符发送整行命令,所以我想我会这样做:

connection = Net::Telnet.new(options) connection.waitfor(/\n/) do |txt| process txt end 

这不起作用,因为它一次性向我发送了一大堆行。 我可以通过以下方式轻松解决这个问题:

 connection.waitfor(/\n/) do |txt| txt.split("\n").each do |line| process line end end 

除了这个问题之外:我发送的字符串几乎总是包含半个命令。 即:如果服务器发送此:

 COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 option1 option2 option3 

我经常会这样:

 COMMAND1 option1 option2 option3 COMMAND2 option1 option2 option3 COMMAND3 opt 

然后我将在下一次阅读中获得COMMAND3的其余选项以及COMMAND4。

有什么方法可以让net / telnet发送给我的换行符分隔的文本? 还是另一种解决方法?

谢谢,斯图尔特

所以这是我目前的解决方案,我不确定这是否是最佳方式,但它在我的实时数据源上运行正常:

 connection = Net::Telnet.new(options) all_text = "" while running do connection.waitfor(/\n/) do |server_text| all_text += server_text while cmd = all_text.slice!(/^.*\n/) do process cmd end # any half-command remains in all_text at this point end end