I am a bit confused by the cornucopia of related methods on the Socket object that supposedly close and clean up a socket connection. Consider the following:
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(); In addition, this guy says that to really cleanly close a connection, one must execute socket.Shutdown(SocketShudown.Send), then wait for the other side to respond.
What is the correct way to close, then clean up a socket connection?