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
Параметры
Объект 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)
Параметры
- 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)
Параметры
- 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)
Параметры
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags , которые будут использоваться при получении данных.
- receivedAddress
- SocketAddress
Экземпляр SocketAddress , который обновляется значением удаленного однорангового узла при возврате этого метода.
- cancellationToken
- CancellationToken
Токен отмены, который может быть использован для указания на отмену асинхронной операции.
Возвращаемое значение
Асинхронная задача, которая завершается с SocketReceiveFromResult числом полученных байтов и конечной точкой отправляющего узла.
Исключения
receivedAddress
имеет значение null
.
Произошла ошибка при попытке доступа к сокету.
Socket был закрыт.
Маркер отмены был отменен. Это исключение сохраняется в возвращаемой задаче.