Node JS本地网络扫描并连接到端口

时间:2018-07-02 12:09:29

标签: node.js parent-child port-scanning

我正在研究节点项目。在那里,我遇到了一个常见的TCP程序,我们可以使用节点中的网络包将其连接到端口。

这个概念很简单。服务器将发出数据缓冲区,客户端将接收缓冲区数据并解析缓冲区数据并将其存储在数据库中

如果我通过单个客户端和服务器连接运行它,那么我当前正在使用的代码可以正常工作,但是当从多个设备获取数据时,它无法正常工作

我尝试使用以下代码扫描网络,并检查端口是否打开。如果打开,则将通过执行子进程连接并读取可用端口的IP。

使用的包裹:

  • arp-scan for ubuntu
  • local-network-scanner-用于扫描本地网络以获取连接的设备列表
  • portscanner-检查特定端口是否已连接
  • child_process

代码:

var scanner = require('arp-scan');
var portscanner = require('portscanner');
var child_process = require('child_process');
const scanner = require('local-network-scanner');

scanner.scan(devices => {
    //console.log(devices);
    for (ip in devices) {
        console.log(devices[ip]['ip']);
        portscanner.checkPortStatus(4040, devices[ip]['ip'], function(error, status) {
            // Status is 'open' if currently in use or 'closed' if available
            console.log(status);
            if(status == 'open') {    
                var child = child_process.fork('./child');    
                child.send(devices[ip]['ip']);
            }
        })
    }  
});

,但是上面的代码未按预期运行。我只想扫描本地网络,并想检查端口4040是否打开。如果打开,则必须单独启动子进程(或者,如果可能的话,必须在单独的线程中启动,这不会影响另一个进程)。请帮助我找到正确的解决方案。

先谢谢了。

0 个答案:

没有答案