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
Параметры
- offset
- Int32
Отсчитываемая от нуля позиция в параметре buffer , в котором хранятся данные.
- size
- Int32
Число получаемых байтов.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- remoteEP
- EndPoint
Ссылка на тот EndPoint же тип, что и конечная точка удаленного узла, обновляемая при синхронном получении.
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронное чтение.
Исключения
Только платформа .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 конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.