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块共享。我只是复制/粘贴整个代码块,它运行良好。 –