NodeJS TCP端口崩溃

时间:2018-12-08 21:39:15

标签: node.js sockets tcp ddos

我正在使用节点js在服务器中开发套接字应用程序。我只是在听9000端口。我正在检查客户端发送到此tcp端口的数据,如果客户端发出了HTTP请求,则将服务器踢出客户端。因为互联网上的某些机器人会这样做,所以我不希望它们出现在我的系统中。由于测试目的,我尝试将该端口与浏览器连接,连续按住F5刷新按钮,然后应用程序立即崩溃。通过这种方式,我正在模拟端口中的DDOS攻击。错误消息如下:

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

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

这是我的基本TCP侦听器代码

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.");
});

如何通过HTTP连接和Internet机器人保存TCP端口?

1 个答案:

答案 0 :(得分:1)

将其放在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.");
});