에서 "아니오 버퍼 공간을 사용할 수"오류가 나는 포트 (411)예방 루비
스크립트는 때때로 잘 작동에 192.168.220.xxx에 192.168.190.xxx에 이르기까지 모든 IP를 스캔 작은 스크립트가 - 소켓이 제대로 닫혀 있지 때이 발생 (2) (errno를 :: ENOBUFS)`
내가 읽고 연결을 사용할 수 없음 버퍼 공간 : 그러나 때때로 나는 "사용할 수있는 버퍼 공간" dcport.rb:8:in
초기화 '오류를 얻을 ,하지만 난 그게 제대로 작동하지 않습니다 방지하기 위해 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'를 '가지고 정의되지 않은 지역 변수 또는 이 순간에 s가 닫히는 것을 의미합니다. – pahnin
여기에 예상대로 작동하지 않는다는 것을 의미합니다. – pahnin
즉, 시간 초과 중 s = nil ** 외부 **를 추가하는 것을 잊었습니다. s의 정의는 타임 아웃 블럭과 begin .. ensure .. end 블럭에 의해 공유된다. 난 그냥 전체 코드 블록을 복사/붙여 넣기 및 잘 실행됩니다. –