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

Начинает асинхронный прием заданного числа байтов данных в указанное место буфера данных, используя заданный объект 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 для использования в данной асинхронной операции сокета.

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

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

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

Исключения

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

Socket был закрыт.

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

Комментарии

Метод ReceiveMessageFromAsync используется в основном для получения данных сообщений в сокете без подключения. Локальный адрес сокета должен быть известен. Этот метод можно использовать только с датаграммами и необработанными сокетами. Сокет должен быть инициализирован с типом сокета, равным Dgram или Raw перед вызовом этого метода. Это можно сделать при создании сокета с помощью Socket.

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

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

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

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

Метод ReceiveMessageFromAsync автоматически задает параметр true сокета PacketInformation при первом вызове для заданного Socketобъекта . Однако объект будет действителен только для пакетов, IPPacketInformation поступающих на локальный компьютер после установки параметра сокета. Если сокет отправляет пакеты между привязкой сокета к локальной конечной точке (явно методом Bind или неявно одним из Connectметодов , ConnectAsync, SendToили SendToAsync ) и первым вызовом ReceiveMessageFromAsync метода, вызов метода приведет к ReceiveMessageFromAsync недопустимым IPPacketInformation объектам для этих пакетов.

Чтобы убедиться, что все IPPacketInformation объекты являются допустимыми, приложение должно задать PacketInformation для параметра сокета значение ,true прежде чем он будет привязан к локальной конечной точке SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) с помощью метода .

Приложение может проверить результирующие IPPacketInformation объекты, если ему нужно знать, была ли датаграмма отправлена с использованием одноадресного, многоадресного или широковещательного адреса.

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

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

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Исходный код:
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

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

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

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

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

Получает данные и возвращает дополнительные сведения об отправителе сообщения.

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.

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

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