node.js - 在nodejs中,如何检查端口是否正在监听或正在使用

标签 node.js sockets

我将在这里非常具体,希望了解这一点的人可以编辑以改写为一般情况。

当前,当您运行“Node 调试”时,它会生成一个进程来监听端口 5858。然后在父级中,尝试连接到该端口。

但是,如果您正在运行另一个“Node 调试” session ,则当前“Node 调试”会挂起,因为该端口正在使用中。

具体你看到的消息是:

 $ node debug example/gcd.js 3 5
< debugger listening on port 5858 >
connecting...

最好让它检测到端口正在使用中(如果没有连接到它,这可能会弄乱正在尝试连接现有调试器的另一个客户端)。

编辑: 接受的解决方案现在位于 trepan-nitrepanjs .

另见 Node JS - How Can You Tell If A Socket Is Already Open With The Einaros WS Socket Module?

最佳答案

以下是我使用的变体:

var net = require('net');

var portInUse = function(port, callback) {
    var server = net.createServer(function(socket) {
    socket.write('Echo server\r\n');
    socket.pipe(socket);
    });

    server.on('error', function (e) {
    callback(true);
    });
    server.on('listening', function (e) {
    server.close();
    callback(false);
    });

    server.listen(port, '127.0.0.1');
};

portInUse(5858, function(returnValue) {
    console.log(returnValue);
});

实际的提交是 https://github.com/rocky/trepanjs/commit/f219410d72aba8cd4e91f31fea92a5a09c1d78f8

关于node.js - 在nodejs中,如何检查端口是否正在监听或正在使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860354/

相关文章:

java - Atmosphere 框架 : broadcaster broadcast message multiple times

node.js - nodejs USR2 信号使用 heapdump 杀死进程

python - 如何停止Python中的套接字线程?

python - OpenVPN 客户端运行时将套接字绑定(bind)到本地 IP 地址 block

javascript - Node.js 中的仅限模块范围

python - 套接字Python 3.5 : Socket server hangs forever on file receive

php - 客户端断开连接后 CSimpleSocket 失败

javascript - 使用 javaScript 按单词中元音的数量对句子进行排序并从左侧对其进行索引

node.js - Meteor Mongo 插入失败——访问被拒绝

javascript - SailsJS : accessing res. 在 beforeCreate 或 afterCreate 中呈现