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.RemoteEndPointEndPoint значение того же типа, что и конечная точка удаленного узла. Свойство будет обновлено при успешном получении к фактической удаленной конечной точке.

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

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

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

Метод ReceiveMessageFromAsync автоматически задает параметру PacketInformationtrue сокета значение при первом вызове для заданного Socketобъекта . Однако объект будет действителен только для пакетов, IPPacketInformation которые поступают на локальный компьютер после установки параметра сокета. Если сокет отправляет пакеты между привязкой сокета к локальной конечной точке (явно методом Bind или неявно одним из Connectметодов , ConnectAsyncSendTo, или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.

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

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