Ruby - Посмотрите, открыт ли порт

Выберите каждый из [a] и пропустите все из [b]: Результат: 1, 5

var a = [1,4,5,9];
var b = [1,6,7,5];

for (i = 0; i < a.length; i++) {
    for (z = 0; z < a.length; z++) {
        if (a[i] === b[z]) {
            console.log(b[z]); // if match > console.log it 
        }
    }
}
43
задан Chris Bunch 6 February 2009 в 05:14
поделиться

2 ответа

Что-то как следующее могло бы работать:

require 'socket'
require 'timeout'

def is_port_open?(ip, port)
  begin
    Timeout::timeout(1) do
      begin
        s = TCPSocket.new(ip, port)
        s.close
        return true
      rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
        return false
      end
    end
  rescue Timeout::Error
  end

  return false
end
51
ответ дан Chris Rice 23 September 2019 в 12:13
поделиться

Только для полноты, Bash был бы чем-то вроде этого:

$ netcat $HOST $PORT -w 1 -q 0 </dev/null && do_something

-w 1 указывает, что тайм-аут 1 секунды, и -q 0 говорит, что при соединении закрывают соединение, как только stdin дает EOF (который /dev/null немедленно сделает).

Bash также имеет свои собственные встроенные сервисы TCP/UDP, но они - опция времени компиляции, и мне не скомпилировали Bash с ними :P

10
ответ дан porges 23 September 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: