Ich schreibe einen einfachen Port-Scanner mit Kern net
Modul von Node.js. Ich bekomme einen 'Rückruf wurde bereits angerufen' Fehler mit meinem Code. Können Sie bitte erkennen, woher der Fehler kommt? Unten ist mein Code:Callback wurde bereits mit async.parallel Funktion aufgerufen
const net = require('net')
const async = require('async')
function findPortStatus(host, port, timeout, cb) {
const socket = new net.Socket()
socket.setTimeout(timeout,() => {
// couldn't establish a connection because of timeout
socket.destroy()
return cb(null, null)
})
socket.connect(port, host,() => {
// connection established
return cb(null, port)
})
socket.on('error', (err) => {
// couldn't establish a connection
return cb(null, null)
})
}
const funcs = []
for (let port = 0; port <= 80; port++) {
funcs.push(function(callback) {
findPortStatus('192.30.253.112', port, 4000, (err, port) => {
if (!err) {
return callback(null, port)
}
})
})
}
async.parallel(funcs, (err, ports) => {
if (err) {
console.error(err.message)
} else {
for (let port of ports) {
if (port) {
console.log(port)
}
}
}
})