2012-02-08 59 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會更合適。客戶端()發送鰭數據包到服務器