我如何确定主机是否可达?

如何确定某个IP地址是否可连接?

我需要编写一个小的node.js示例,尝试连接到ip:port并返回truefalse ,从而确定主机是否可访问。

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; }