在 Node.JS 中進行端口掃描還是比較方便的,一般會有廣播和輪詢兩種方式。即使用廣播和掃描,使用廣播發出的消息有時會被路由器屏蔽,所以并不可靠。
使用node.js中的net模塊,可以直接嘗試向目錄主機的某個端口進行連接,如果能建立連接,則說明該地址存在服務器。
var socket = new Socket()socket.connect(port, host)socket.on('connect', function() { //找到port 和 host 地址})所以只要進行255次掃描,則可找到同一網段內所有的Web服務器了。完整的示例代碼如下,使用Node.JS掃描的速度極快,幾秒內即可完成掃描。
var net   = require('net')var Socket = net.Socket//待掃描的開始網段,可換成192.168.0var ip   = '10.0.0'var port  = 80var scan = function(host, cb) { var socket = new Socket() var status = null socket.setTimeout(1500) socket.on('connect', function() {  socket.end()  cb && cb(null, host) }) socket.on('timeout', function() {  socket.destroy()  cb && cb(new Error('timeout'), host) }) socket.on('error', function(err) {  cb && cb(err, host) }) socket.on('close', function(err) { }) socket.connect(port, host)}for(var i = 1; i <= 255; i++ ) { scan(ip+'.'+i, function(err, host) {  if (err) {   console.log('Not found', host)   return  }  console.log("Found: ", host) })}輸出結果:
Found: 10.0.0.1Found: 10.0.0.3Not found 10.0.0.255......
總結
以上所述是小編給大家介紹的Node.JS中快速掃描端口并發現局域網內的Web服務器地址(80) ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答