Node.js中的IP类

本文详细介绍了如何在Node.js中使用ip模块进行IP地址的操作,包括获取本地IP、验证IP格式、处理CIDR和IP与长整型之间的转换,有助于开发者处理IP相关任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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地址相关的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值