Поделиться через


Socket.ReceiveFromAsync Метод

Определение

Перегрузки

ReceiveFromAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного приема данных с указанного сетевого устройства.

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

Получает данные и возвращает конечную точку отправляющего узла.

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Получает данные и возвращает конечную точку отправляющего узла.

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Получает данные и возвращает конечную точку отправляющего узла.

ReceiveFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Получает данные и возвращает конечную точку отправляющего узла.

ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)

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

ReceiveFromAsync(SocketAsyncEventArgs)

Исходный код:
Socket.cs
Исходный код:
Socket.cs
Исходный код:
Socket.cs

Начинает выполнение асинхронного приема данных с указанного сетевого устройства.

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

Параметры

e
SocketAsyncEventArgs

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

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

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

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

Исключения

Объект RemoteEndPoint не может иметь значение "null".

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

Socket был закрыт.

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

Комментарии

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

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

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

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

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

Для сокетов, ориентированных на сообщения, входящее сообщение помещается в буфер вплоть до общего размера буфера. Свойства SocketAsyncEventArgs.Count и SocketAsyncEventArgs.Offset определяют место размещения данных в буфере и объем данных.

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

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

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

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Получает данные и возвращает конечную точку отправляющего узла.

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveFromResult> ^ ReceiveFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveFromResult)

Параметры

buffer
ArraySegment<Byte>

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

remoteEndPoint
EndPoint

Конечная точка того же типа, что и конечная точка удаленного узла.

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

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

Исключения

remoteEndPoint имеет значение null.

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

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

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

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Получает данные и возвращает конечную точку отправляющего узла.

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

Параметры

buffer
ArraySegment<Byte>

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

socketFlags
SocketFlags

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

remoteEndPoint
EndPoint

Конечная точка того же типа, что и конечная точка удаленного узла.

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

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

Исключения

remoteEndPoint имеет значение null.

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

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

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

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Получает данные и возвращает конечную точку отправляющего узла.

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveFromResult)

Параметры

buffer
Memory<Byte>

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

remoteEndPoint
EndPoint

Конечная точка того же типа, что и конечная точка удаленного узла.

cancellationToken
CancellationToken

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

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

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

Исключения

remoteEndPoint имеет значение null.

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

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

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

ReceiveFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

Получает данные и возвращает конечную точку отправляющего узла.

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

Параметры

buffer
Memory<Byte>

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

socketFlags
SocketFlags

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

remoteEndPoint
EndPoint

Конечная точка того же типа, что и конечная точка удаленного узла.

cancellationToken
CancellationToken

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

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

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

Исключения

remoteEndPoint имеет значение null.

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

Socket был закрыт.

Вызывающий оператор в стеке вызовов не имеет необходимых разрешений.

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

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

ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)

Исходный код:
Socket.Tasks.cs
Исходный код:
Socket.Tasks.cs

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

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

Параметры

buffer
Memory<Byte>

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

socketFlags
SocketFlags

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

receivedAddress
SocketAddress

Экземпляр SocketAddress , который обновляется значением удаленного однорангового узла при возврате этого метода.

cancellationToken
CancellationToken

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

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

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

Исключения

receivedAddress имеет значение null.

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

Socket был закрыт.

Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.

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