NodeJS 检测本地端口是否可用

这是一个JavaScript实现的网络工具类,包含端口有效性检查和本地端口可用性检测的功能。`NetUtil`类提供了静态方法`isValidPort()`用于判断端口号是否在0-65535的有效范围内,以及`isUsableLocalPort()`方法,该方法通过创建服务器监听指定端口来异步检测端口是否可用。此代码对于网络应用开发或服务器配置具有实用价值。
摘要由CSDN通过智能技术生成

来源:https://gitee.com/yichengxian/nodeTool/blob/main/core/net/NetUtil.js

'use strict';
const net = require('net');
const OSUtil = require('../os/OSUtil');
const StringUtil = require("../string/StringUtil");

/**
 * @author ycx
 * @description 网络工具类
 */
class NetUtil {


    /**
     *  有效最大端口号 65535
     * @type {number}
     */
    static #PORT_RANGE_MAX = 0xFFFF;


    /**
     * 判断是否有效端口 这里是0 -65535
     * 注:有些端口是1024-65535
     * @param port {number} 端口号
     * @return {boolean} 是否有效
     */
    static isValidPort(port) {
        return port > 0 && port <= this.#PORT_RANGE_MAX;
    }

    /**
     * 检测本地端口是否可用
     * @param port {number} 端口号
     * @return Promise({boolean})
     */
    static async isUsableLocalPort(port) {

        //获取回调
        return new Promise(resolve => {
            //检测是否合法端口
            if (!this.isValidPort(port)) {
                resolve(false);
                return;
            }
            let server = net.createServer().listen(port);
            server.on('listening', () => {
                //关闭服务
                server.close();
                resolve(true);
            });
            server.on('error', (err) => {

                // 'EACCES' 权限被拒绝
                // 'EADDRINUSE‘ 端口被占用
                resolve(false);
            });

        });
    }


}

module.exports = NetUtil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值