1、介绍
本文档介绍了Node.js中的ip模块,该模块用于处理IP地址相关的操作。我们将详细讨论ip模块的常用方法和用法示例,以及如何在Node.js项目中使用这些方法。
2、安装
可以通过npm安装ip模块:
npm install ip
利用npm下载ip类依赖包,一般情况下安装完node之后就自带。
安装完成后,在代码中引入ip模块:
const ip = require('ip');
3、使用方法
3.1、取本地IP地址
使用ip.address()方法可以获取本地主机的IP地址
const localIP = ip.address();
console.log('本地IP地址:', localIP);
3.2、验证IP地址格式
使用ip.isV4Format(ipAddress)和ip.isV6Format(ipAddress)方法可以验证IP地址是否为IPv4或IPv6格式:
const ipAddress = '192.168.1.1';
if (ip.isV4Format(ipAddress)) {
console.log(ipAddress, '是IPv4格式的IP地址。');
} else {
console.log(ipAddress, '不是IPv4格式的IP地址。');
}
const ipv6Address = '2001:0db8:85a3:0000:0000:8a2e:0370:7334';
if (ip.isV6Format(ipv6Address)) {
console.log(ipv6Address, '是IPv6格式的IP地址。');
} else {
console.log(ipv6Address, '不是IPv6格式的IP地址。');
}
3.3、 CIDR格式处理
使用ip.cidr(cidr)方法可以将CIDR格式的IP地址转换为对象,包含地址和子网掩码:
const cidrAddress = '192.168.1.0/24';
const cidrObject = ip.cidr(cidrAddress);
console.log('CIDR对象:', cidrObject);
3.4、 IP地址与长整型的转换
const ipValue = '192.168.1.1';
const longIP = ip.toLong(ipValue);
console.log('IP地址', ipValue, '的长整型值为:', longIP);
const longValue = 3232235777; // 对应于192.168.1.1的长整型值
const restoredIP = ip.fromLong(longValue);
console.log('长整型值', longValue, '对应的IP地址为:', restoredIP);
4、示例代码
以下包括上述的方法返回值示例
//引用ip工具类
const ipTool = require('ip');
ipTool.address(); // my ip address -> result==== 192.168.207.100
ipTool.isEqual('::1', '::0:1'); // true
ipTool.toBuffer('127.0.0.1'); // Buffer([127, 0, 0, 1])
ipTool.fromPrefixLen(24); // 255.255.255.0 转化掩码格式
ipTool.mask('192.168.2.134', '255.255.255.0'); // 192.168.1.0
ipTool.not('255.255.255.0'); // 0.0.0.255
ipTool.or('192.168.1.134', '0.0.0.255'); // 192.168.1.255
ipTool.isPrivate('127.0.0.1'); // true
ipTool.isV4Format('127.0.0.1'); // true
ipTool.isV6Format('::ffff:127.0.0.1'); // true
// subnet information
ipTool.subnet('192.168.1.134', '255.255.255.192');
// { networkAddress: '192.168.1.128',
// firstAddress: '192.168.1.129',
// lastAddress: '192.168.1.190',
// broadcastAddress: '192.168.1.191',
// subnetMask: '255.255.255.192',
// subnetMaskLength: 26,
// numHosts: 62,
// length: 64,
// contains: function(addr){...} }
ipTool.cidrSubnet('192.168.1.134/26')
// { networkAddress: '192.168.1.128',
// firstAddress: '192.168.1.129',
// lastAddress: '192.168.1.190',
// broadcastAddress: '192.168.1.191',
// subnetMask: '255.255.255.192',
// subnetMaskLength: 26,
// numHosts: 62,
// length: 64,
// contains: function(addr){...} }
// range checking
ipTool.cidrSubnet('192.168.1.134/26').contains('192.168.1.190'); // true
// ipv4 long conversion
ipTool.toLong('127.0.0.1'); // 2130706433
ipTool.fromLong(2130706433); // '127.0.0.1'
5、小结
本文档介绍了Node.js中ip模块的使用方法,包括获取本地IP地址、验证IP地址格式、CIDR格式处理以及IP地址与长整型的转换等功能。通过学习和使用这些方法,你可以更方便地处理IP地址相关的操作。