多くの非同期読み取りを行うアプリケーションを扱っています。パフォーマンスを向上させるために、呼び出しがブロックされない限り、Read
fromへの同期呼び出しを直接実行したいと思います。SslStream
それSslStream
自体はDataAvailable
、基になるものとは異なり、プロパティを提供しませんNetworkStream
。
それで、ラップされたネットワーク ストリームが読み取られていることがわかっている場合、 の呼び出しがブロックを引き起こさないことがtrue
保証DataAvailable
されるでしょうか?SslStream
このような:
public void Read(NetworkStream netStream, SslStream sslStream)
{
// given that netStream is the inner stream of sslStream
if (netStream.DataAvailable)
{
// Will not block
sslStream.Read(...);
}
else
{
// Would block
sslStream.Read(...);
}
}
はSslStream
すでに認証されており、すぐに使用できます。暗号化/復号化以外に追加のオーバーヘッドがあるかどうかはわかりません。SslStream
暗号化された 1 バイトを読み取るために、基になるストリームから複数のバイトを読み取る必要がある場合、答えは依存していると思います。