次の方法で共有


Socket.Available プロパティ

ネットワークから受信した、読み取り可能なデータ量を取得します。

Public ReadOnly Property Available As Integer
[C#]
public int Available {get;}
[C++]
public: __property int get_Available();
[JScript]
public function get Available() : int;

プロパティ値

ネットワークから受信した、読み取り可能なデータのバイト数。

例外

例外の種類 条件
SocketException ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。
ObjectDisposedException Socket は閉じられています。

解説

非ブロッキング Socket を使用している場合は、 Receive を呼び出す前に、 Available を使用してデータが読み取り用のキューに置かれているかどうかを確認することをお勧めします。 Stream Socket 型を使用している場合は、読み取り用のネットワーク バッファのキューに置かれているデータ総量をデータとして使用できます。 Dgram など、メッセージ指向のソケット タイプを使用している場合、利用可能なデータはそのバッファ内の最初のメッセージです。ネットワーク バッファのキューにデータが置かれていない場合、 Available は 0 を返します。

リモート ホストがシャットダウンするか接続を閉じると、 AvailableSocketException をスローします。 SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。

使用例

[C#, C++] 次に示すのは、FIONREAD を使用して IOControl を呼び出した場合と、Available プロパティを使用した場合とを比較するコード例です。

 
// FIONREAD is also available as the "Available" property.
       public const int FIONREAD   = 0x4004667F;
       
       static void DisplayPendingByteCount(Socket s)
{
    byte[] outValue = BitConverter.GetBytes(0);

    // Check how many bytes have been received.
    s.IOControl(FIONREAD, null, outValue);
    
    uint bytesAvailable = BitConverter.ToUInt32(outValue, 0);
    Console.WriteLine("server has {0} bytes pending. Available property says {1}.",
        bytesAvailable, s.Available);
    
    return;
}

[C++] 
// FIONREAD is also available as the "Available" property.
const int FIONREAD   = 0x4004667F;

void DisplayPendingByteCount(Socket* s)
{
    Byte outValue[] = BitConverter::GetBytes(0);

    // Check how many bytes have been received.
    s->IOControl(FIONREAD, 0, outValue);

    UInt32 bytesAvailable = BitConverter::ToUInt32(outValue, 0);
    Console::WriteLine(S"server has {0} bytes pending. Available property says {1}.", __box(bytesAvailable), __box(s->Available));

    return;
}

[Visual Basic, JScript] Visual Basic および JScript のサンプルはありません。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

参照

Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | Receive | Stream | Dgram