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 и .NET 5 и более ранних версий: при попытке доступа к сокету произошла ошибка.
Значение параметраoffset
меньше 0.
-или-
Значение offset
превышает длину buffer
.
-или-
Значение параметраsize
меньше 0.
-или-
Значениеsize
превышает значение, полученное, если отнять от длины buffer
значение параметра offset
.
Socket был закрыт.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin*
и End*
) для разработки новых приложений. Вместо этого используйте эквиваленты на Task
основе .
Вы можете передать обратный вызов, реализующий AsyncCallback для BeginReceiveMessageFrom , чтобы получать уведомления о завершении операции. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов будет выполняться во время вызова BeginReceiveMessageFrom. В этом случае свойству CompletedSynchronously возвращаемого IAsyncResult объекта будет присвоено значение true
, чтобы указать, что метод завершился синхронно.
AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный методу BeginReceiveMessageFrom .
Асинхронная BeginReceiveMessageFrom операция должна быть завершена путем вызова EndReceiveMessageFrom метода . Как правило, метод вызывается делегатом AsyncCallback . EndReceiveMessageFrom блокирует вызывающий поток до завершения операции.
Чтобы отменить ожидающий BeginReceiveMessageFrom, вызовите Close метод .
Этот метод считывает данные в buffer
параметр и записывает конечную точку удаленного узла, из которой отправляются данные, а также сведения о полученном пакете. Сведения о том, как получить эту конечную точку, см. в EndReceiveMessageFromразделе . Этот метод наиболее полезен, если вы планируете асинхронно получать датаграммы без подключения от неизвестного узла или нескольких узлов.
Примечание
Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.
Примечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.