is it possible to get hostname in Node.js?
This i开发者_开发百科s how I get client's IP:
var ip = request.header('x-forwarded-for');
So, how do I get client's hostname?
var hostname = request.header('???');
Thanks for reply!
You can use the 'dns' module to do a reverse dns lookup:
require('dns').reverse('12.12.12.12', function(err, domains) {
if(err) {
console.log(err.toString());
return;
}
console.log(domains);
});
See: http://nodejs.org/docs/v0.3.1/api/all.html#dns.reverse
I think this might help you. That's not exactly the client hostname but the ip address.
function getClientAddress(req) {
return req.headers['x-forwarded-for'] || req.connection.remoteAddress;
}
I think the only way you can do it is like this:
<form method="post" action="/gethostname">
<label for="hostname">What is your hostname?</label>
<input type="text" name="hostname" id="hostname">
</form>
But I would suggest you don't really need it, it's not like you can do anything useful with the information. If you just want a string to identify with the user's machine then you can make something up.
If what you're really after is the FQDN then I would suggest it's still not really that useful to you, but for that you need Reverse DNS lookup. If you're on a VPS or similar you can probably configure your box to do this for you, but note that it'll likely take a few seconds so it's not a good idea to do it as part of a response. Also note, you'll not be getting the user's machine's FQDN in most cases but that of their router.
You can also achieve the same if you're using socket.io in the following manner:
// Setup an example server
var server = require('socket.io').listen(8080);
// On established connection
server.sockets.on('connection', function (socket) {
// Get server host
var host = socket.handshake.headers.host;
// Remove port number together with colon
host = host.replace(/:.*$/,"");
// To test it, output to console
console.log(host);
});
if you are using express,
then you can do as follows,
var express = require("express");
var app = express.createServer();
app.listen(8080);
app.get("/", function (req, res){
console.log("REQ:: "+req.headers.host);
res.end(req.headers.host);
});
You can get hostname from the os module:
var os = require("os");
os.hostname();
精彩评论