我有一个小脚本,它扫描端口 411 上从 192.168.190.xxx 到 192.168.220.xxx 的所有 ip。
该脚本有时工作正常,但有时我收到错误“没有可用的缓冲区空间”
dcport.rb:8:in
初始化':没有可用的缓冲区空间 - 连接(2)(Errno::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