简介
在 HTTP 通信中,经常需要知道客户端的 IP 和端口信息,而 Node.js 自带的 request
模块只提供了访问 URL 的方案,无法直接获取客户端的 IP 和端口。因此,我们需要使用一个 npm 包 addr-to-ip-port
来解决这个问题。
addr-to-ip-port
是一个将客户端地址(实际上是 socket 地址)转换为 IP 和端口的库,支持 IPv4 和 IPv6。并且,其使用非常简单,只需要几行代码即可完成转换。
安装和使用
addr-to-ip-port
库可以使用 npm 安装,命令如下:
npm install addr-to-ip-port
在 Node.js 中,使用 require
引入库:
const addrtoipport = require('addr-to-ip-port');
调用 addrtoipport
函数,传入 socket 地址,即可得到 IP 和端口信息:
const socketAddress = req.socket.remoteAddress + ':' + req.socket.remotePort; const { ip, port } = addrtoipport(socketAddress);
其中 req
对象是 http.IncomingMessage
实例,即 HTTP 请求实例。
addrtoipport
函数返回一个对象,包含两个属性 ip
和 port
,表示转换后的 IP 和端口。
示例代码
下面是一个完整的 Node.js HTTP 服务代码,演示如何使用 addr-to-ip-port
库获取客户端的 IP 和端口信息:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------------ - --------------------------- ----- ------ - ----------------------- ---- -- - ----- ------------- - ------------------------ - --- - ---------------------- ----- - --- ---- - - ---------------------------- ---------------- --- ------ --- ---------- ------------------ ---------------- --------------- -------------- ---------- --- ------------------- -- -- - ------------------- ------- -- ------------------------- ---
在该示例中,我们在收到 HTTP 请求时获取了客户端的 socket 地址,并用 addr-to-ip-port
库将其转换为 IP 和端口信息,最后在控制台输出客户端的 IP 和端口。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/163975