我正在處理大量異步閱讀的應用程序。爲了提高性能,我希望直接從SslStream
進行Read
的同步呼叫,前提是呼叫不會阻塞。我可以依賴DataAvailable進行SSL封裝的網絡流嗎?
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
是否需要從基礎流讀取多個字節以讀取一個加密字節。
謝謝。除非我知道這個流是沒有SSL的普通網絡流,否則我會一直使用異步閱讀。 – Dervall 2012-08-15 06:08:53