我有一個TcpClient對象,它使用底層的NetworkStream.Write()向服務器發送一些數據。爲此 ,我有:關閉TCP連接的正確方法是什麼
TcpClient server = new TcpClient(serverName, 50001);
/* ... */
NetworkStream stream = server.GetStream();
現在,當按下一個按鈕,連接應該關閉。 關閉連接的正確方法是什麼? MSDN文檔說,關閉TcpClient(使用.Close())實際上並不關閉套接字,只關閉TcpClient資源(這至少是我理解文檔的方式)。
那麼,會不會正確地關閉連接的下一個代碼?
stream.Close();
server.Close();
難道這還不夠,還是應該首先檢查(在某種程度上)如果流(或服務器)可以關閉(如果連接是半開或東西)......
更,NetworkStream.Close()
MSDN文檔聲明它釋放資源(即使是套接字),所以也許關閉流就足夠了,因爲我阻止在那之後使用TcpClient。
什麼是正確的方法?
我想我太信任智能感知了。 TcpClient.Close()的彈出窗口聲明:「放棄此System.Net.Sockets.TcpClient實例而不關閉底層連接。」奇怪的事情。感謝您的回覆。 – 2009-11-20 09:26:51
的確,這就是3.0文檔(http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.close(VS.85).aspx)在第一句中所說的......但接着第三句說它*關閉Socket和NetworkStream。 3.5文檔(我之前鏈接的)是一致的。我懷疑3.0文檔中的行是一個錯誤。 – Joren 2009-11-20 09:32:41