NodeJS http サーバー (Windows 上) が localhost/127.0.0.1 ではなくホスト名をリッスンする必要があるという要件があります。
このために、Windows マシンの完全なホスト名 (ドメイン名を含む) が必要ですが、完全なホスト名を取得できません。
使ってみた
require('os').hostname()
しかし、完全なホスト名はわかりません。
だから私は以下を試しました:
var dns = require('dns');
var os = require('os');
var hostname = os.hostname();
console.log("Short hostname = ", hostname);
dns.lookup(hostname, function (err, add, fam) {
if (err)
{
console.log("The error = ", JSON.stringify(err));
return;
}
console.log('addr: '+add);
console.log('family: ' + fam);
dns.reverse(add, function(err, domains){
if (err)
{
console.log("The reverse lookup error = ", JSON.stringify(err));
return;
}
console.log("The full domain name ", domains);
});
})
上記のコードは正常に動作し、企業のイーサネットに接続しているときに以下の出力が得られます
C:\>node getFullHostname.js
Short hostname = SPANUGANTI
addr: 16.190.58.214
family: 4
The full domain name [ 'spanuganti.abc.xyz.net' ]
しかし、企業のワイヤレス ネットワークに接続している場合、同じコードが機能しません。
C:\>node getFullHostname.js
Short hostname = SPANUGANTI
addr: 16.183.204.47
family: 4
The reverse lookup error =
{"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getHostByAddr"}
したがって、以下のヘルプが必要です
- Node.jsで完全なマシン名(Windows)を取得する簡単な方法はありますか?
- または、上記のコードの問題点を教えてください