Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js net.socket end()与destroy()在FIN_WAIT2中挂起的连接_Node.js_Sockets_Tcp_Netstat - Fatal编程技术网

Node.js net.socket end()与destroy()在FIN_WAIT2中挂起的连接

Node.js net.socket end()与destroy()在FIN_WAIT2中挂起的连接,node.js,sockets,tcp,netstat,Node.js,Sockets,Tcp,Netstat,我正在开发一个RCON实用程序,并试图使用Node.js,但在关闭套接字甚至刚刚结束客户端时,我遇到了FIN_WAIT2问题。服务器是一个游戏服务器,除了RCON配置之外,我无法访问该源。不同的生产RCON客户端在服务器上工作正常,因此应该正确配置 如何正确地关闭、关闭、破坏Node.js中的套接字连接?我真不敢相信我被这样一个简单的观念所束缚。我在Node.js中找到了很多关于这个问题的老文章,有一段时间以前的链接 即使是一个简单的测试,包括一个建议 const net = require('

我正在开发一个RCON实用程序,并试图使用Node.js,但在关闭套接字甚至刚刚结束客户端时,我遇到了FIN_WAIT2问题。服务器是一个游戏服务器,除了RCON配置之外,我无法访问该源。不同的生产RCON客户端在服务器上工作正常,因此应该正确配置

如何正确地关闭、关闭、破坏Node.js中的套接字连接?我真不敢相信我被这样一个简单的观念所束缚。我在Node.js中找到了很多关于这个问题的老文章,有一段时间以前的链接

即使是一个简单的测试,包括一个建议

const net = require('net');
mySock = net.connect({
  host : '127.0.0.1',
  port: 21214,
});

mySock.close = function(data) {
    var Self = this;
    if (data) this.write(data, function() {
        Self.destroy();
      } );
    else this.destroy();
};

setTimeout(f1, 1000);

function f1 () {
  //  mySock.destroy();
  //  mySock.end();
  mySock.close();
}
导致连接保持FIN_WAIT2状态。似乎永远如此。最终FIN_WAIT2消失了,但它让游戏服务器处于某种奇怪的状态,即来自其他不同生产RCON应用程序的新连接在服务器重新启动之前将无法工作


tcp        1      0 127.0.0.1:21214         127.0.0.1:35560         CLOSE_WAIT  5724/GameServer
tcp        0      0 127.0.0.1:35560         127.0.0.1:21214         FIN_WAIT2   -

我不知道Node.js需要做什么才能彻底关闭它。如果我使用另一个完全基于C的RCON库,比如,我永远不会遇到问题,而且只要命令一执行,就不会有延迟的
netstat
连接。当然,除非我首先运行Node.js测试程序。在这种情况下,C RCON将在服务器重新启动之前无法连接。

问题在于对等方尚未关闭其端。与此端无关。两端显示连接的一个片段已打开。当我运行C RCON工具时,绝对没有剩余的netstat片段,因此可以在不打开任何东西的情况下让RCON连接到此游戏服务器。我在Node.js中看不到如何做到这一点,也看不到在没有解决方案的情况下反复提到这个问题。大部分时间都是几年前的事了,所以我猜人们只是停止寻求帮助,或者切换语言,或者在TCP堆栈上使用异国情调的计时器来克服这个问题。对于相同的连接,两端都不可能显示FIN-WAIT-2。CLOSE-WAIT表示本地应用程序尚未关闭套接字。是的,我明白了。只有一面显示FIN_WAIT2。我不知道如何关闭Node.js中的套接字,所以它不会这样做。而且似乎也没有人这样做,这毫无意义。即使是文档中的例子也可以做到这一点。问题是对等方还没有结束它的工作。与此端无关。两端显示连接的一个片段已打开。当我运行C RCON工具时,绝对没有剩余的netstat片段,因此可以在不打开任何东西的情况下让RCON连接到此游戏服务器。我在Node.js中看不到如何做到这一点,也看不到在没有解决方案的情况下反复提到这个问题。大部分时间都是几年前的事了,所以我猜人们只是停止寻求帮助,或者切换语言,或者在TCP堆栈上使用异国情调的计时器来克服这个问题。对于相同的连接,两端都不可能显示FIN-WAIT-2。CLOSE-WAIT表示本地应用程序尚未关闭套接字。是的,我明白了。只有一面显示FIN_WAIT2。我不知道如何关闭Node.js中的套接字,所以它不会这样做。而且似乎也没有人这样做,这毫无意义。甚至文档中的示例也可以做到这一点