Как определить, доступен ли хост?

как я могу определить, является ли определенный IP-адрес подключаемым?

мне нужно написать небольшой node.js образец, который пытается подключиться к ip:port и возвращает true или false, таким образом, определяя, доступен ли хост или нет.

2 ответов


http.get

var options = {
  host: 'www.google.com',
  port: 80,
  path: '/index.html'
};

http.get(options, function(res) {
  if (res.statusCode == 200) {
    console.log("success");
  }
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

function testPort(port, host, cb) {
  http.get({
    host: host, 
    port: port 
  }, function(res) {
    cb("success", res); 
  }).on("error", function(e) {
    cb("failure", e);
  });
}

для сокета tcp просто используйте net.createConnection

function testPort(port, host, cb) {
  net.createConnection(port, host).on("connect", function(e) {
    cb("success", e); 
  }).on("error", function(e) {
    cb("failure", e);
  });
}

Если вас интересует только HTTP, вы можете использовать запрос HTTP HEAD (а не POST / GET):

function hostAvailable(url) {
  var req = new XMLHttpRequest();
  req.open('HEAD', url, false);
  req.send();
  return req.status!=404;
}