次の方法で共有


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 メソッドを使用してこのデータが使用可能かどうかを確認します。 DataAvailabletrue の場合、 Read メソッドの実行はすぐに終了します。リモート ホストがシャットダウンするか接続を閉じると、 DataAvailableSocketException をスローします。

使用例

[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