Node.js

Node.jsでブロードキャストアドレスを取得する

More than 1 year has passed since last update.

Node.jsを実行している環境でネットワークのブロードキャストアドレスを取得したかったので、やり方を調べてみました。ipモジュールを使うと簡単にできました。
参考:Stackoverflow - Get local IP address in node.js
複数のネットワークが存在することを考慮して、配列で返すようにしています。

const ip = require('ip');
const os = require('os');

function getBroadcastAddresses() {
  let ifaces = os.networkInterfaces();

  let results = []

  Object.keys(ifaces).forEach(function (ifname) {

    ifaces[ifname].forEach(function (iface) {
      if ('IPv4' !== iface.family || iface.internal !== false) {
        // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
        return;
      }

      let broadcastAddress = ip.or(iface.address, ip.not(iface.netmask))
      results.push(broadcastAddress)
    });
  });

  return results
}
使い方
let broadcastAddress = getBroadcastAddresses()
console.log(broadcastAddress) // ['192.168.10.255'] とかが取れる