次のシナリオでは。
System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();
NS.DataAvailable使用とチェックに違いはありますTC.Available > 0か?
次のシナリオでは。
System.Net.Sockets.TcpClient TC = SomeHowObtained;
System.Net.Sockets.NetworkStream NS = TC.GetStream();
NS.DataAvailable使用とチェックに違いはありますTC.Available > 0か?
この場合、違いはありません。の場合、内部的NS.DataAvailableに true を返しますSocket.Available != 0。TC.Available戻るだけSocket.Availableで、それが0より大きいかどうかを確認しているので、基本的に同じことをしています。
MSDN から:
NetworkStream で読み取り可能なデータがあるかどうかを示す値を取得します。
ネットワークから受信して読み取り可能なデータの量を取得します。
NetworkStream.DataAvailable戻り値boolean(ストリーム上で読み取り可能なデータがある場合は true)、TcpClient.Available戻り値Int32(ネットワークから受信され、読み取り可能なデータのバイト数)