Зачем устанавливать опции сокета (SetSocketOption) перед завершением работы? И последние 3 строчки тоже не нужны. C# using.