Согласно документации в MSDN, вызов stream.Close () «Закрывает текущий поток и освобождает любые ресурсы (например, сокеты и файловые дескрипторы), связанные с текущим потоком.», Что говорит мне о том, что stream.Close () также располагает сокетом. Вам все равно придется вызывать socket.Shutdown ().
В любом случае, ИМХО, самый безопасный способ - использовать «использование», он удерживает вас на безопасном сайте:)
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
{
ReceiveBufferSize = 65536,
SendBufferSize = 150
};) {
socket.Connect(
new IPEndPoint(
IPAddress.Parse(
Properties.Settings.Default.MpsServer2), Properties.Settings.Default.MpsPort2));
using (var stream = new NetworkStream(socket, true) {
// do something with the stream here
}
socket.Shutdown(SocketShutdown.Both);
}