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


Socket.BeginReceiveMessageFrom Метод

Определение

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

public:
 IAsyncResult ^ BeginReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveMessageFrom(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveMessageFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

Параметры

buffer
Byte[]

Массив типа Byte , который является расположением хранилища для полученных данных.

offset
Int32

Отсчитываемая от нуля позиция в параметре buffer , в котором хранятся данные.

size
Int32

Число получаемых байтов.

socketFlags
SocketFlags

Побитовое сочетание значений SocketFlags .

remoteEP
EndPoint

Ссылка на тот EndPoint же тип, что и конечная точка удаленного узла, обновляемая при синхронном получении.

callback
AsyncCallback

Делегат AsyncCallback .

state
Object

Объект, содержащий сведения о состоянии для этого запроса.

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

Объект, IAsyncResult ссылающийся на асинхронное чтение.

Исключения

buffer равно null.

–или–

remoteEP равно null.

Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету.

offset меньше 0.

–или–

offset больше длины buffer.

–или–

size меньше 0.

–или–

size больше длины buffer минус значения offset параметра.

Он Socket был закрыт.

Комментарии

Это важно

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.

Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginReceiveMessageFrom для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginReceiveMessageFrom. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно. AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginReceiveMessageFrom.

Асинхронная BeginReceiveMessageFrom операция должна выполняться путем вызова EndReceiveMessageFrom метода. Как правило, метод вызывается делегатом AsyncCallback . EndReceiveMessageFrom блокирует вызывающий поток до завершения операции.

Чтобы отменить ожидающий BeginReceiveMessageFrom, вызовите Close метод.

Этот метод считывает данные в buffer параметр и записывает конечную точку удаленного узла, из которой отправляются данные, а также сведения о полученном пакете. Сведения о том, как получить эту конечную точку, см. в статье EndReceiveMessageFrom. Этот метод наиболее полезен, если вы планируете асинхронно получать без подключения диаграммы данных от неизвестного узла или нескольких узлов.

Замечание

При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки.

Замечание

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.

Замечание

Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.

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