多くの非同期読み取りを行うアプリケーションを扱っています。パフォーマンスを向上させるために、呼び出しがブロックされない限り、Readfromへの同期呼び出しを直接実行したいと思います。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 バイトを読み取るために、基になるストリームから複数のバイトを読み取る必要がある場合、答えは依存していると思います。