NetworkStream.DataAvailable プロパティ
NetworkStream に読み取り対象のデータがあるかどうかを示す値を取得します。
Public Overridable ReadOnly Property DataAvailable As Boolean
[C#]
public virtual bool DataAvailable {get;}
[C++]
public: __property virtual bool get_DataAvailable();
[JScript]
public function get DataAvailable() : Boolean;
プロパティ値
ストリームからデータを読み取ることができる場合は true 。それ以外の場合は false 。
例外
例外の種類 | 条件 |
---|---|
ObjectDisposedException | NetworkStream が閉じています。 |
IOException | 基になっている Socket が閉じています。 |
SocketException | SocketException.ErrorCode を使用して特定のエラー コードを取得します。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。 |
解説
Read メソッドは、リモート ホストからデータを受信し、そのデータが読み取り用のネットワーク バッファ内のキューに置かれるまで実行をブロックします。ブロックしない場合は、 DataAvailable メソッドを使用してこのデータが使用可能かどうかを確認します。 DataAvailable が true の場合、 Read メソッドの実行はすぐに終了します。リモート ホストがシャットダウンするか接続を閉じると、 DataAvailable は SocketException をスローします。
使用例
[Visual Basic, C#, C++] データが使用可能な場合に NetworkStream から読み取りを実行する例を次に示します。
' Check to see if this NetworkStream is readable.
If myNetworkStream.CanRead Then
Dim myReadBuffer(1024) As Byte
Dim myCompleteMessage As [String] = ""
Dim numberOfBytesRead As Integer = 0
' Incoming message may be larger than the buffer size.
Do
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length)
myCompleteMessage = [String].Concat(myCompleteMessage, Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead))
Loop While myNetworkStream.DataAvailable
' Print out the received message to the console.
Console.WriteLine(("You received the following message : " + myCompleteMessage))
Else
Console.WriteLine("Sorry. You cannot read from this NetworkStream.")
End If
[C#]
// Check to see if this NetworkStream is readable.
if(myNetworkStream.CanRead){
byte[] myReadBuffer = new byte[1024];
String myCompleteMessage = "";
int numberOfBytesRead = 0;
// Incoming message may be larger than the buffer size.
do{
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
myCompleteMessage =
String.Concat(myCompleteMessage, Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
}
while(myNetworkStream.DataAvailable);
// Print out the received message to the console.
Console.WriteLine("You received the following message : " +
myCompleteMessage);
}
else{
Console.WriteLine("Sorry. You cannot read from this NetworkStream.");
}
[C++]
// Check to see if this NetworkStream is readable.
if (myNetworkStream->CanRead) {
Byte myReadBuffer[] = new Byte[1024];
String* myCompleteMessage = S"";
int numberOfBytesRead = 0;
// Incoming message may be larger than the buffer size.
do{
numberOfBytesRead = myNetworkStream->Read(myReadBuffer, 0, myReadBuffer->Length);
myCompleteMessage =
String::Concat(myCompleteMessage, Encoding::ASCII->GetString(myReadBuffer, 0, numberOfBytesRead));
} while (myNetworkStream->DataAvailable);
// Print out the received message to the console.
Console::WriteLine(S"You received the following message : {0}", myCompleteMessage);
} else {
Console::WriteLine(S"Sorry. You cannot read from this NetworkStream.");
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
NetworkStream クラス | NetworkStream メンバ | System.Net.Sockets 名前空間 | Read