Обнаружение отключения сокета SslStream

Я использую SslStream поверх NetworkStream, который обертывает Socket, как я могу обнаружить разъединение Socket в этой ситуации.

Другими словами, я хочу определить, закрыл ли удаленный клиент соединение.

2 ответа

Решение

Вы получите EOS при чтении или IOException при написании.

Используйте метод poll на внутреннем сокете:

if (client.Client.Poll(0, SelectMode.SelectRead))
{
    read = 0;
    read = br.Read(buffer, 0, buffer.Length);

    if (read > 0)
    {
        Console.Write(Encoding.ASCII.GetString(buffer, 0, read));
    }
    else
        throw new Exception("Socket closed");
}
Другие вопросы по тегам