Node.js 节点TCP服务器错误与netcat客户端重新设置

Node.js 节点TCP服务器错误与netcat客户端重新设置,node.js,tcp,netcat,Node.js,Tcp,Netcat,在示例NodeJS服务器(在末尾)中,为什么(看起来)netcat连接上的socket.end()会导致ECONNRESET服务器错误 请注意,具有客户端的服务器上存在套接字对象错误: TERMINAL 1 netcat localhost 9000 Hello. Goodbye. TERMINAL 2 ==> A Connection connected ==> The Server is disconnecting a connection { [Error: read ECO

在示例NodeJS服务器(在末尾)中,为什么(看起来)
netcat
连接上的
socket.end()
会导致
ECONNRESET
服务器错误

请注意,具有客户端的服务器上存在套接字对象错误:

TERMINAL 1
netcat localhost 9000
Hello.
Goodbye.

TERMINAL 2
==> A Connection connected
==> The Server is disconnecting a connection
{ [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
TERMINAL 1
telnet localhost 9000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Hello.
Goodbye.
Connection closed by foreign host.

TERMINAL 2
==> A Connection connected
==> The Server is disconnecting a connection
==> A Connection disconnected
现在请注意,使用客户端的服务器上没有套接字对象错误:

TERMINAL 1
netcat localhost 9000
Hello.
Goodbye.

TERMINAL 2
==> A Connection connected
==> The Server is disconnecting a connection
{ [Error: read ECONNRESET] code: 'ECONNRESET', errno: 'ECONNRESET', syscall: 'read' }
TERMINAL 1
telnet localhost 9000
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Hello.
Goodbye.
Connection closed by foreign host.

TERMINAL 2
==> A Connection connected
==> The Server is disconnecting a connection
==> A Connection disconnected
我正在寻找一个可以修复错误的答案,如果失败,我会非常清楚地解释为什么会发生这种情况

非常感谢,
杰森


这与
netcat
的某些版本(并非全部)如何处理TCP连接的关闭有关

确切的原因超出了我对TCP的了解,因此我无法帮助您(我只能说,
ECONNRESET
意味着节点试图读取已由
netcat
重置/关闭的连接)

对我来说,一个有效的解决方案是在发送最后一条消息后调用套接字:

conn.end("Goodbye.\n")
conn.destroy()

我猜它会导致节点无法在套接字上执行更多读取,这可能会导致错误。

感谢您的链接。如果你想得到答案-包括你的代码here@baao好的,我已经复制了代码,谢谢。我会等着接受更详细的答案,但这是一个有用的开始,所以谢谢!