本地调试获取IPv4地址

  • 需求背景

开发移动端的时候时常需要本地调试,公司的ip地址经常变动,每天调试程序时,总需要cmd、ipconfig(一直重复这样的操作)

为了节省时间,使用了nodejs的os(操作系统来获取IPv4地址)。

首先引入:

const os = require('os');

接着,获取ip地址,ip地址等等信息是放在网络接口列表中的:

let network = os.networkInterfaces();

网络接口列表如下JSON格式:

{
"以太网": [
{
"address": "",
"netmask": "",
"family": "IPv6",
"mac": "",
"scopeid": ,
"internal": false,
"cidr": ""
},
{
"address": "10.1.30.76",
"netmask": "",
"family": "IPv4",
"mac": "",
"internal": false,
"cidr": ""
}
],
"LoopbackPseudo-Interface1": [
{
"address": ":: 1",
"netmask": "",
"family": "IPv6",
"mac": "",
"scopeid": 0,
"internal": true,
"cidr": ""
},
{
"address": "127.0.0.1",
"netmask": "",
"family": "IPv4",
"mac": "",
"internal": true,
"cidr": ""
}
]
}

从网络接口列表可以看到,我们所需要的是以太网的元素中的family为IPv4的那一项的address、而LoopbackPseudo-Interface1里边也有一个family为IPv4,再加上一个唯一的判断条件internal

所以判断条件为:

//alias代表以太网或者其他中的数组中的每一个对象元素

alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal

完整代码:

test.js

var os = require('os')
function getNetworkIp() {
	let needHost = '';
	try {
		// 获得网络接口列表
		let network = os.networkInterfaces();
		for (let item in network) {

			let iface = network[item];									
			for (let i = 0; i < iface.length; i++) {
				let alias = iface[i];
				if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
					needHost = alias.address;
				}
			}
		}
	} catch (e) {
		needHost = 'localhost';
	}
	return needHost;
}
console.log(getNetworkIp());

安装了Nodejs的话,在G盘下(可以随意放置)

 接着进入G盘(根据你放的位置)

执行:

node.js test.js //test为文件名

如下图: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值