Меня немного смущает рог изобилия связанных методов на объекте 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)
, а затем ждать, пока другая сторона ответить.
Каков правильный способ закрыть, а затем очистить соединение сокета?