📅  最后修改于: 2023-12-03 14:44:40.226000             🧑  作者: Mango
在Node.js网络编程中,socket.address()方法是指返回网络地址信息之一的对象。
该方法允许开发者访问一个Socket实例的绑定地址。这可以提供已打开套接字的端口和IP地址。根据所运行的操作系统和打开Socket的方式不同,可以获得多种形式的IP地址信息。
返回值是一个JavaScript对象,它有以下属性:
下面是使用socket.address()方法的一些示例:
const net = require('net');
const server = net.createServer((socket) => {
// connection listener
});
server.listen(() => {
console.log('server bound');
console.log(server.address().port); // 返回服务器监听的端口号
});
const os = require('os');
const ifaces = os.networkInterfaces(); // 获取本机所有的网络接口信息
Object.keys(ifaces).forEach((ifname) => {
let alias = 0;
ifaces[ifname].forEach((iface) => {
if ('IPv4' !== iface.family || iface.internal !== false) {
// 如果不是IPv4或者是内部地址则忽略
return;
}
if (alias >= 1) {
console.log(ifname + ':' + alias, iface.address);
} else {
console.log(ifname, iface.address);
// var socket = net.connect(4096, iface.address);
}
++alias;
});
});
我们来详细解释上面这个代码:
首先,使用os.networkInterfaces()来获取本机网络接口的信息。
每个接口都是一个数组,数组中的每个对象包含有关该接口的详细信息,包括IP地址和MAC地址等。
现在,遍历每个接口的所有地址。如果接口的家族不是IPv4或是内部接口,则跳过。
否则,我们将Socket连接到“iface.address”(接口地址)并指定端口号 4096。
这里需要说明一下:
iface.address
为字符串类型,格式为例如"192.168.2.2"
的IP地址。
net.connect(端口号, IP地址)
可以使用指定的端口号和IP地址创建一个新的Socket连接。
可以看出,使用socket.address()
方法可以帮助我们快速的获取服务器端口和本地IPv4地址。