在Node.js开辟过程中,端口查询是一个罕见的操纵,它有助于我们懂得利用顺序的收集连接状况,排查收集成绩。本文将具体介绍如何在Node.js中查询端口,并供给一些实用的技能。
Node.js内置了net
模块,可能用来创建收集效劳器跟客户端。经由过程这个模块,我们可能轻松查询端口信息。
const net = require('net');
const server = net.createServer((socket) => {
console.log('Client connected:', socket.remoteAddress, socket.remotePort);
});
server.listen(8080, () => {
console.log('Server listening on port 8080');
});
鄙人面的代码中,效劳器监听在8080端口。我们可能经由过程拜访server.address()
方法来获取端口信息。
const address = server.address();
console.log('Server port:', address.port);
os
模块Node.js的os
模块供给了有关操纵体系的信息,包含收集接口跟端口信息。
const os = require('os');
const ifaces = os.networkInterfaces();
for (const iface in ifaces) {
ifaces[iface].forEach((details) => {
if (details.family === 'IPv4' && !details.internal) {
console.log(`Interface: ${iface}, IP: ${details.address}, Port: ${details.port}`);
}
});
}
const net = require('net');
const port = 8080;
const server = net.createServer();
server.listen(port, () => {
console.log(`Server listening on port ${port}`);
server.close(() => {
console.log(`Server closed on port ${port}`);
});
});
server.on('error', (err) => {
if (err.code === 'EADDRINUSE') {
console.log(`Port ${port} is already in use`);
}
});
除了Node.js内置模块,另有一些第三方库可能帮助我们查询端口信息。
portscanner
库portscanner
是一个用于扫描跟测试端口能否开放的Node.js库。
const portscanner = require('portscanner');
portscanner.scan('127.0.0.1', 1, 65535, (err, ports) => {
if (err) {
console.log(err);
} else {
console.log('Open ports:', ports);
}
});
node-portfinder
库node-portfinder
可能帮助我们找到可用的端口。
const portfinder = require('node-portfinder');
portfinder.basePort = 3000;
portfinder.find((port) => {
console.log('Found port:', port);
});
经由过程以上方法,我们可能轻松地查询Node.js利用顺序的端口信息,从而帮助我们排查收集成绩。在现实开辟过程中,可能根据具体须要抉择合适的方法。