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


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

Параметры

e
SocketAsyncEventArgs

Объект SocketAsyncEventArgs , используемый для этой асинхронной операции сокета.

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

Значение , если операция ввода-вывода ожидается. Событие Completed параметра 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)

Параметры

buffer
Memory<Byte>

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

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)

Параметры

buffer
Memory<Byte>

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

socketFlags
SocketFlags

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

remoteEndPoint
EndPoint

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

cancellationToken
CancellationToken

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

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

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

Исключения

Объект Socket закрыт.

remoteEndPoint равно null.

Перед выполнением этой операции необходимо вызвать метод Bind.

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

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