【问题标题】:Detecting SslStream socket disconnection检测 SslStream 套接字断开连接
【发布时间】:2012-09-15 00:10:35
【问题描述】:

我在 NetworkStream 之上使用 SslStream 包装了一个 Socket,我怎么能在这种情况下检测到 Socket 断开连接。

换句话说,我想检测远程客户端是否关闭了连接。

【问题讨论】:

    标签: c# sockets networkstream sslstream disconnection


    【解决方案1】:

    读取时会得到 EOS,写入时会得到 IOException。

    【讨论】:

    • 但是当我使用 EndRead 方法时,我没有正确收到消息,请你看看这个stackoverflow.com/questions/12415021/…
    • @user1666700 抱歉,我不知道 .Net 异步套接字。
    • :(我希望我能尽快得到答案
    • 抱歉,除了尝试写入或读取之外,还有其他方法吗?
    【解决方案2】:

    在内部套接字上使用 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");
    }
    

    【讨论】:

    • 您不需要在重新分配之前立即将 read 归零。
    猜你喜欢
    • 2012-12-10
    • 2016-05-31
    • 1970-01-01
    • 2020-07-04
    • 2013-11-16
    • 1970-01-01
    • 2013-07-22
    • 2019-06-23
    • 2014-04-08
    相关资源
    最近更新 更多