You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在原生NodeJS中实现ICMP ping功能,无需依赖NPM等外部工具?

NodeJS无外部依赖实现ICMP Ping需求说明

大家好,前几天我尝试在NodeJS中对一个IP执行ICMP ping操作。按照论坛惯例我并非空手提问,我翻到过包括本站在内的不少相关实现方案,但都不符合我的需求。

我的项目有一个硬性要求,就是不能使用NPM或Node-GYP,因此raw-sockets相关方案直接被排除了——除非可以不用Node本身以外的外部依赖就能在NodeJS中调用C++代码。

我也尝试并实现了调用系统命令的方案,下面是我已验证可在Linux和Windows平台运行的实现(我没在Mac设备上测试,但大概率也能正常运行):

'use strict';

import { execSync } from "child_process";

class Ping {
    #stdoutToMS (stdout) {
        let res;

        let a = stdout.split('=');
        for (let i = 0; i < a.length; i++) {
            res = a[i].split("ms");
        }

        return ~~res[0].split('/')[0].trim();
    }

    ping (host, timeout = 5000) {
        let mstout = timeout / 1000;
        let stdout;

        try {
            if (process.platform === "win32") {
                stdout = execSync("ping -n 1 -l 1 -w " + timeout + ' ' + host);
            } else {
                stdout = execSync("ping -c 1 -s 16 -W " + mstout + ' ' + host);
            }
        } catch (err) {
            return false;
        }

        return this.#stdoutToMS(stdout.toString());
    }
};

export default Ping;

如果大家有无需借助外部软件、纯原生NodeJS实现该功能的思路,还请不吝赐教,非常感谢。


内容的提问来源于stack exchange,提问作者Valentino Zaffrani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:03