Socket.Available プロパティ
アセンブリ: System (system.dll 内)



非ブロッキング Socket を使用している場合は、Receive を呼び出す前に、Available を使用してデータが読み取り用のキューに置かれているかどうかを確認することをお勧めします。読み取り用のネットワーク バッファのキューに置かれているデータ総量をデータとして使用できます。ネットワーク バッファのキューにデータが置かれていない場合、Available は 0 を返します。
リモート ホストがシャットダウンするか接続を閉じると、Available は SocketException をスローできます。SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。
![]() |
---|
このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。 |

次に示すのは、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; }
// FIONREAD is also available as the "Available" property. const int FIONREAD = 0x4004667F; void DisplayPendingByteCount( Socket^ s ) { array<Byte>^ outValue = BitConverter::GetBytes( 0 ); // Check how many bytes have been received. s->IOControl( FIONREAD, nullptr, outValue ); UInt32 bytesAvailable = BitConverter::ToUInt32( outValue, 0 ); Console::WriteLine( "server has {0} bytes pending. Available property says {1}.", bytesAvailable, s->Available ); return; }
// FIONREAD is also available as the "Available" property. public static final int FIONREAD = 0x4004667F; static void DisplayPendingByteCount(Socket s) { ubyte outValue[] = BitConverter.GetBytes(0); // Check how many bytes have been received. s.IOControl(FIONREAD, null, outValue); UInt32 bytesAvailable = BitConverter.ToUInt32(outValue, 0); //ToDo: Unsigned Integers not supported- converted to int Console.WriteLine("server has {0} bytes pending. Available property " + "says {1}.", bytesAvailable.ToString(), (System.Int32)s.get_Available()); return; } //DisplayPendingByteCount

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Socket.Available プロパティのページへのリンク