.NETのSslStreamでデータの終端を判断したい
SslStreamでサーバーサイドの実装をしています。
読み取るデータがない状態でRead()を呼ぶと、ブロッキングされてしまいます。
戻り値に0が返ってくると思っていましたが、返ってきません。
これ以上読むべきデータがない状態を判断することはできますか?
同じSslStreamを使用してクライアントの実装をしたら0が返ってくるので判断できました。
サーバーサイドの実装だけがブロッキングしてしまっているので困っています。
NetWorkStreamではDataAvailableというプロパティがあるのでデータがそれ以上ない状態を判断できますが、SslStreamの場合のやり方がわかりません。
public static byte[] Read(SslStream stream)
{
MemoryStream ms = new MemoryStream();
byte[] resBytes = new byte[1024];
try
{
while (true)
{
int n = stream.Read(resBytes, 0, resBytes.Length);
if (0 < n)
{
ms.Write(resBytes, 0, n);
}
else
{
break;
}
}
}
catch (Exception e)
{
throw e;
}
return ms.ToArray();
}