Socket.ReceiveAsync Метод

Определение

Перегрузки

ReceiveAsync(ArraySegment<Byte>)

Получает данные из подключенного сокета.

ReceiveAsync(IList<ArraySegment<Byte>>)

Получает данные из подключенного сокета.

ReceiveAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса, чтобы получить данные из подключенного объекта Socket.

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из подключенного сокета.

ReceiveAsync(Memory<Byte>, CancellationToken)

Получает данные из подключенного сокета.

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Получает данные из подключенного сокета.

ReceiveAsync(ArraySegment<Byte>)

Получает данные из подключенного сокета.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer);
member this.ReceiveAsync : ArraySegment<byte> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte)) As Task(Of Integer)

Параметры

buffer
ArraySegment<Byte>

Буфер полученных данных.

Возвращаемое значение

Task<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к

ReceiveAsync(IList<ArraySegment<Byte>>)

Получает данные из подключенного сокета.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte))) As Task(Of Integer)

Параметры

buffers
IList<ArraySegment<Byte>>

Список буферов для полученных данных.

Возвращаемое значение

Task<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к

ReceiveAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса, чтобы получить данные из подключенного объекта Socket.

public:
 bool ReceiveAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveAsync (e As SocketAsyncEventArgs) As Boolean

Параметры

e
SocketAsyncEventArgs

Объект SocketAsyncEventArgs для использования в данной асинхронной операции сокета.

Возвращаемое значение

Boolean

true, если операция ввода-вывода находится в состоянии ожидания. По завершении операции создается событие Completed в параметре e.

false, если операция ввода-вывода завершена синхронно. В данном случае событие Completed на параметре e не будет создано и объект e, передаваемый как параметр, можно изучить сразу после получения результатов вызова метода для извлечения результатов операции.

Исключения

Аргумент был недопустимым. Свойства Buffer или BufferList на параметре e должны ссылаться на допустимые буферы. Может быть установлено одно из этих свойств, но нельзя одновременно устанавливать оба свойства.

Операция сокета уже выполнялась с использованием объекта SocketAsyncEventArgs, указанного в параметре e.

Этот метод доступен только в Windows XP и более поздних версиях.

Socket был закрыт.

Произошла ошибка при попытке доступа к сокету.

Комментарии

Этот ReceiveAsync метод используется для подключенных сокетов или связанных сокетов без подключения и используется для чтения входящих данных. Локальный адрес сокета должен быть известен.

Для связанных сокетов без подключения эта функция ограничивает адреса, от которых принимаются полученные сообщения. Функция возвращает сообщения только с удаленного адреса, указанного в соединении. Сообщения с других адресов автоматически удаляются.

Свойство SocketAsyncEventArgs.SocketFlags в параметре e предоставляет поставщику службы "Сокеты окон" дополнительные сведения о запросе на чтение. Дополнительные сведения об использовании этого параметра см. в разделе System.Net.Sockets.SocketFlags.

Для успешного System.Net.Sockets.SocketAsyncEventArgs вызова этого метода требуются следующие свойства и события объекта:

Вызывающий SocketAsyncEventArgs.UserToken объект может задать для свойства любой объект пользовательской среды, требуемый перед вызовом ReceiveAsync метода, чтобы информация была извлечена в методе обратного вызова. Если обратный вызов требует больше сведений, чем один объект, можно создать небольшой класс для хранения других необходимых сведений о состоянии в качестве членов.

Для сокетов в стиле потока байтов входящие данные помещаются в буфер до тех пор, пока буфер не будет заполнен, соединение закрыто или внутренние буферные данные будут исчерпаны.

Для сокетов, ориентированных на сообщения, входящее сообщение помещается в буфер до общего размера буфера, связанного с параметром e . Если сообщение больше буфера, буфер заполняется первой частью сообщения.

Для сокетов, ориентированных на подключение, ReceiveAsync метод может указывать корректное завершение виртуального канала одним из двух способов, зависящих от того, является ли сокет потоком байтов или сообщением. Для байтовых потоков ноль байтов, прочитанных, указывает на корректное закрытие и что больше байтов никогда не будет считываться. Для сокетов, ориентированных на сообщения, где часто допускается нулевое байтовое сообщение, SocketException SocketAsyncEventArgs.SocketError используется для указания корректного закрытия с помощью собственного кода ошибки Winsock WSAEDISCON (10101). В любом случае код SocketAsyncEventArgs.SocketError ошибки WSAECONNRESET (10054) указывает на SocketException прерывание закрытия.

См. также раздел

Применяется к

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

Получает данные из подключенного сокета.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags) As Task(Of Integer)

Параметры

buffer
ArraySegment<Byte>

Буфер полученных данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при получении данных.

Возвращаемое значение

Task<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

Получает данные из подключенного сокета.

public:
 System::Threading::Tasks::Task<int> ^ ReceiveAsync(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public System.Threading.Tasks.Task<int> ReceiveAsync (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.ReceiveAsync : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> System.Threading.Tasks.Task<int>
Public Function ReceiveAsync (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Task(Of Integer)

Параметры

buffers
IList<ArraySegment<Byte>>

Список буферов для полученных данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при получении данных.

Возвращаемое значение

Task<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к

ReceiveAsync(Memory<Byte>, CancellationToken)

Получает данные из подключенного сокета.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Параметры

buffer
Memory<Byte>

Буфер полученных данных.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

Получает данные из подключенного сокета.

public System.Threading.Tasks.ValueTask<int> ReceiveAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

Параметры

buffer
Memory<Byte>

Буфер полученных данных.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags, которые будут использоваться при получении данных.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask<Int32>

Асинхронная задача, которая завершается числом полученных байтов.

Применяется к