2012-02-08 24 views
18

我与插座在使用该命令服务器的NodeJS:如何从TCP套接字在断开的NodeJS

client = net.createConnection() 

我怎么能那么正确地从服务器断开?

我试图client.end()甚至client.destroy()

但是当我用netstat查看连接状态则说明该连接处于状态FIN_WAIT2。

如何关闭并彻底销毁连接?

+0

你试过'client.close()'? – fent 2012-02-08 11:03:59

+2

没有client.close方法 – mgamer 2012-02-08 11:37:30

回答

15

net.createConnection()返回一个Socket对象。 client.destroy()是你想要做的。

来源:http://nodejs.org/docs/latest/api/net.html#socket.destroy

+4

end和destroy有什么区别?摧毁后,我也看到netstat中的状态FIN_WAIT2。 – mgamer 2012-02-08 15:44:03

+2

@mgamer''end()''只关闭套接字的写入流,远程主机可以保持写入流打开并发送数据 – bara 2014-02-11 19:34:18

+1

通过文档说“只有在出现错误时才需要”,似乎是唯一的方法关闭连接。对于我自己,我使用'socket.close = function(data) \t \t { \t \t \t var Self = this; \t \t \t如果(数据) \t \t \t \t this.write(数据,函数(){Self.destroy();}); \t \t \t别的 \t \t \t \t this.destroy(); \t \t};' – Fr0sT 2015-06-10 09:06:19

0

你想要的是client.close(),客户端则保持活着将来的连接。如果你不想在不久的将来使用这个连接,你可以摧毁它()。我不得不说,在我看来,net.Socket中的语义并不一致。你连接()一个套接字和相反是关闭()。 open()一个Socket会更合适。客户端()发送鳍数据包到服务器