0
「沒有緩衝區空間可用」的錯誤我有一個小腳本,掃描所有的IPS從192.168.190.xxx到192.168.220.xxx端口411防止紅寶石
該腳本正常工作,有時,但有時我得到的錯誤「沒有可用的緩衝空間」 dcport.rb:8:in
初始化':沒有可用的緩衝空間 - 連接(2)(錯誤:: ENOBUFS)`
我已閱讀,當插座都無法正常關閉,這種情況發生,但我已使用mysocket.close
來防止我認爲無法正常工作的情況。
如何防止這種情況發生,我的意思是如何正確關閉插座?
我的代碼如下
require 'socket'
require 'timeout'
(190...216).each do |i|
(0...255).each do |j|
begin
#puts "Scanning 192.168.#{i}.#{j}"
scan=Timeout::timeout(10/1000.0) {
s=TCPSocket.new("192.168.#{i}.#{j}",411)
s.close
puts "192.168.#{i}.#{j} => Hub running"
}
rescue Timeout::Error
rescue Errno::ENETUNREACH
rescue Errno::ECONNREFUSED
end
end
end
我'未定義的局部變量或方法「S」爲main:Object(NameError)'這意味着s在這個瞬間被關閉了.. – pahnin
我的意思是如果在這裏沒有按照預期的那樣工作 – pahnin
這意味着你忘記在超時的**之外添加s = nil **, s的定義由超時塊和begin .. ensure .. end塊共享。我只是複製/粘貼整個代碼塊,它運行良好。 –