Socket.ReceiveMessageFromAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| ReceiveMessageFromAsync(SocketAsyncEventArgs) |
Начинает асинхронно получать указанное количество байтов данных в указанное расположение в буфере данных, используя указанное SocketFlagsзначение, и сохраняет сведения о конечной точке и пакете. |
| ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint) |
Получает данные и возвращает дополнительные сведения об отправителе сообщения. |
| ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint) |
Получает данные и возвращает дополнительные сведения об отправителе сообщения. |
| ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken) |
Получает данные и возвращает дополнительные сведения об отправителе сообщения. |
| ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken) |
Получает данные и возвращает дополнительные сведения об отправителе сообщения. |
ReceiveMessageFromAsync(SocketAsyncEventArgs)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Начинает асинхронно получать указанное количество байтов данных в указанное расположение в буфере данных, используя указанное SocketFlagsзначение, и сохраняет сведения о конечной точке и пакете.
public:
bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (e As SocketAsyncEventArgs) As Boolean
Параметры
Объект SocketAsyncEventArgs , используемый для этой асинхронной операции сокета.
Возвращаемое значение
e будет возникать после завершения операции.
false Если операция ввода-вывода завершилась синхронно. В этом случае событие параметра Completed не будет вызываться, и e объект, переданный в качестве параметра, e может быть рассмотрен сразу после вызова метода, чтобы получить результат операции.
Исключения
Значение RemoteEndPoint null не может быть пустым.
Он Socket был закрыт.
Произошла ошибка при попытке доступа к сокету.
Комментарии
Метод ReceiveMessageFromAsync используется в основном для получения данных сообщения в сокете без подключения. Локальный адрес сокета должен быть известен. Этот метод можно использовать только с диаграммами данных и необработанными сокетами. Сокет должен быть инициализирован с типом сокета, заданным Dgram или Raw перед вызовом этого метода. Это можно сделать при построении сокета с помощью Socket.
Вызывающий объект должен задать SocketAsyncEventArgs.RemoteEndPoint свойство EndPoint того же типа, что и конечная точка удаленного узла. Свойство будет обновлено при успешном получении фактической удаленной конечной точки.
Для успешного System.Net.Sockets.SocketAsyncEventArgs вызова этого метода требуются следующие свойства и события объекта:
Вызывающий SocketAsyncEventArgs.UserToken объект может задать свойство любому объекту пользовательского ReceiveMessageFromAsync состояния, требуемому перед вызовом метода, чтобы информация была извлечена в методе обратного вызова. Если обратный вызов требует больше информации, чем один объект, можно создать небольшой класс для хранения других необходимых сведений о состоянии в качестве членов.
Для сокетов, ориентированных на сообщения, входящие сообщения помещаются в буфер до общего размера буфера. SocketAsyncEventArgs.Offset Свойства SocketAsyncEventArgs.Count определяют место размещения данных в буфере и объем данных.
Метод ReceiveMessageFromAsync автоматически задает параметр true сокета PacketInformation в первый раз, когда он вызывается для заданногоSocket. Однако объект будет допустимым только для пакетов, IPPacketInformation поступающих на локальный компьютер после установки параметра сокета. Если сокет отправляет пакеты между привязкой сокета к локальной конечной точке (явным Bind образом методом или неявно одним из методов, ConnectAsyncSendToили SendToAsync одним из Connectметодов) и первым вызовом ReceiveMessageFromAsync метода, вызовы ReceiveMessageFromAsync метода приводят к недопустимым IPPacketInformation объектам для этих пакетов.
Чтобы убедиться, что все IPPacketInformation объекты допустимы, приложение должно задать PacketInformation параметрtrue сокета, прежде чем он привязан к локальной конечной точке с помощью SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) метода.
Приложение может проверить полученные IPPacketInformation объекты, если он должен знать, была ли отправлена диаграмма данных с помощью одноадресной рассылки, многоадресной рассылки или широковещательного адреса.
См. также раздел
Применяется к
ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Получает данные и возвращает дополнительные сведения об отправителе сообщения.
public:
System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync(ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)
Параметры
- buffer
- ArraySegment<Byte>
Буфер для полученных данных.
- remoteEndPoint
- EndPoint
Конечная точка того же типа, что и конечная точка удаленного узла.
Возвращаемое значение
Асинхронная задача, которая завершается с SocketReceiveMessageFromResult количеством полученных байтов и дополнительными сведениями о узле отправки.
Исключения
Объект Socket закрыт.
remoteEndPoint равно null.
Перед выполнением этой операции необходимо вызвать метод Bind.
Применяется к
ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Получает данные и возвращает дополнительные сведения об отправителе сообщения.
public:
System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)
Параметры
- buffer
- ArraySegment<Byte>
Буфер для полученных данных.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags, которое будет использоваться при получении данных.
- remoteEndPoint
- EndPoint
Конечная точка того же типа, что и конечная точка удаленного узла.
Возвращаемое значение
Асинхронная задача, которая завершается с SocketReceiveMessageFromResult количеством полученных байтов и дополнительными сведениями о узле отправки.
Исключения
Объект Socket закрыт.
remoteEndPoint равно null.
Перед выполнением этой операции необходимо вызвать метод Bind.
Применяется к
ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Получает данные и возвращает дополнительные сведения об отправителе сообщения.
public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync(Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)
Параметры
- remoteEndPoint
- EndPoint
Конечная точка того же типа, что и конечная точка удаленного узла.
- cancellationToken
- CancellationToken
Маркер отмены, который можно использовать для сигнала об асинхронной операции, следует отменить.
Возвращаемое значение
Асинхронная задача, которая завершается с SocketReceiveMessageFromResult количеством полученных байтов и дополнительными сведениями о узле отправки.
Исключения
Объект Socket закрыт.
remoteEndPoint равно null.
Перед выполнением этой операции необходимо вызвать метод Bind.
Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.
Применяется к
ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Получает данные и возвращает дополнительные сведения об отправителе сообщения.
public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync(Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)
Параметры
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags, которое будет использоваться при получении данных.
- remoteEndPoint
- EndPoint
Конечная точка того же типа, что и конечная точка удаленного узла.
- cancellationToken
- CancellationToken
Маркер отмены, который можно использовать для сигнала об асинхронной операции, следует отменить.
Возвращаемое значение
Асинхронная задача, которая завершается с SocketReceiveMessageFromResult количеством полученных байтов и дополнительными сведениями о узле отправки.
Исключения
Объект Socket закрыт.
remoteEndPoint равно null.
Перед выполнением этой операции необходимо вызвать метод Bind.
Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.