ネットワークから受信した、読み取り可能なデータ量を取得します。
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 を返します。
リモート ホストがシャットダウンするか接続を閉じると、 Available は SocketException をスローします。 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