首页 > 解决方案 > NodeJS TCP Port crashes

问题描述

I am developing socket application in my server with node js. I am just listening 9000 port. I am checking the data that client sent to this tcp port, if a client made http request, I kick client from server. Because some bots in the internet does that and I dont want them in my system. Due to test purposes, I try to connect that port with a browser, hold down F5 refresh button continuously, then application crashes immediately. I am simulating the DDOS attacks in my port by this way. The error message as follows:

events.js:183
  throw er; // Unhandled 'error' event
  ^

Error: read ECONNRESET
at _errnoException (util.js:992:11)
at TCP.onread (net.js:618:25)

And here is my basic TCP listener code

var net = require("net");
var server = net.createServer();

server.on("error", err =>
{
   console.log("error handled, error is : %s",err);
});

server.on("connection",function(socket)
{
    var remoteAddress = socket.remoteAddress;
    console.log("new client connection %s",remoteAddress);

socket.end();
});

server.listen(9000, function()
{
    console.log("I am listening.");
});

What can be done to save TCP port from HTTP connections and internet bots?

标签: node.jssocketstcpddos

解决方案


把它放在 socket.end() 下:

socket.on('error', function(error) {
    console.log('Socket got problems: ', error.message);
});

完整代码:

var net = require("net");
var server = net.createServer();

server.on("error", err =>
{
   console.log("error handled, error is : %s",err);
});

server.on("connection",function(socket)
{
    var remoteAddress = socket.remoteAddress;
    console.log("new client connection %s",remoteAddress);

    socket.end();
    socket.on('error', function(error) {
     console.log('Socket got problems: ', error.message);
    });
});

server.listen(9000, function()
{
    console.log("I am listening.");
});

推荐阅读