我对 Socket 对象上数量众多的相关方法感到有些困惑,这些方法据说可以关闭和清理一个 socket 连接。请考虑以下代码:
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.1.22", 8333);
socket.Send(Encoding.UTF8.GetBytes("hello"));
// now for the closing fun
socket.Shutdown(SocketShutdown.Both);
socket.Disconnect(false);
socket.Close();
socket.Dispose();
此外,这位博主指出,要想彻底地关闭一个连接,必须先执行 socket.Shutdown(SocketShudown.Send)
,然后等待另一端响应。
如何正确地关闭和清理一个 socket 连接?