Socket.Available Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее количество полученных из сети и доступных для чтения данных.
public:
property int Available { int get(); };
public int Available { get; }
member this.Available : int
Public ReadOnly Property Available As Integer
Значение свойства
Количество байтов данных, полученных из сети и доступных для чтения.
Исключения
Произошла ошибка при попытке доступа к сокету.
Socket был закрыт.
Примеры
В следующем примере кода сравниваются результаты вызова IOControl с FIONREAD и свойством Available.
// 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 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;
}
Комментарии
Если вы используете неблокирующий Socket, Available это хороший способ определить, помещаются ли данные в очередь для чтения, перед вызовом Receive. Доступные данные — это общий объем данных, помещенных в очередь в сетевом буфере для чтения. Если в сетевом буфере нет данных, Available возвращается значение 0.
Если удаленный узел завершает работу или закрывает подключение, Available может вызвать исключение SocketException. Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.