我對.Net套接字生命週期感到困惑,特別是在最後的結尾。根據MSDN(http://msdn.microsoft.com/en-us/library/system.net.sockets.socket_methods%28v=vs.110%29.aspx),套接字可以執行BeginDisconnect(),Disconnect(),Shutdown(),Close()和Finalize()。但我有點困惑時,我會選擇做各的這些,哪些發送FIN,哪些發送RST,哪些防止打電話給我的事件處理程序,等等。而且,新的事件,因爲關閉()釋放套接字的資源,我何時需要單獨完成一個Finalize()?對.Net套接字生命週期感到困惑
我的問題有人提出,因爲我一直在做一個
if (_TCPConn.Connected)
{
_TCPConn.Shutdown(SocketShutdown.Both);
_TCPConn.Disconnect(true);
}
(_TCPConn是我的插座),一旦我做了斷開()我得到
請求發送或接收數據不允許的,因爲插座 已經在這個方向與以前的關機 電話關機
...在我的事件處理程序中,因爲數據仍然異步進入並觸發處理程序。做一個關閉()似乎是解決這個問題的方法。但那是當我意識到我需要更好地理解這一點的時候。另外,從這些阻止它的不同方法使套接字恢復生機的對稱方法是什麼?
一個很好的回答這個問題是,如果有人能指出的好文章或資源描述的.Net插座生命週期。