SslStream.Read在连接的套接字上返回0

时间:2016-02-15 13:14:42

标签: c# .net sslstream

有一个接口IStream来抽象NetworkStream和SslStream。使用NetworkStream一切都很好,而SslStream在Read方法上有问题。这就是我建立Ssl流的方式:

class SecureStream : SslStream, IStream
{
    TcpClient _tcpClient;
    public SecureStream(TcpClient tcpClient) : base(tcpClient.GetStream()) {
        _tcpClient = tcpClient;
        var serverCertificate = new X509Certificate(@"C:\Cert.cer");
        AuthenticateAsServer(serverCertificate);
        ReadTimeout = -1;
        this.InnerStream.ReadTimeout = -1;
        _tcpClient.Client.ReceiveTimeout = -1;
    }
    ...
}

成功读取后,某些部分数据(http标头)必须在Read方法上等待几秒钟,但Read方法立即返回0.Ssl连接保持活动状态,我可以将响应写回其他线程。什么原因可能是Read方法没有等待数据出现在流中?

1 个答案:

答案 0 :(得分:0)

事实证明,对于构造函数内部负责的SSL流建立这样的行为(感谢Luaan)。 Encapsulated SslStream版本按预期工作。