Socket.BeginSendTo Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Отправляет данные асинхронно на конкретный удаленный узел.
public:
IAsyncResult ^ BeginSendTo(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 BeginSendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- offset
- Int32
Отсчитываемая от нуля позиция, с buffer которой начинается отправка данных.
- size
- Int32
Количество байтов для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронную отправку.
Исключения
Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету.
offset меньше 0.
–или–
offset больше длины buffer.
–или–
size меньше 0.
–или–
size больше длины buffer минус значения offset параметра.
Он Socket был закрыт.
Вызывающий объект выше в стеке вызовов не имеет разрешения на запрошенную операцию.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginSendTo для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginSendTo. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginSendTo.
Операция BeginSendTo должна быть завершена EndSendTo путем вызова метода. Как правило, метод вызывается предоставленным AsyncCallback делегатом. EndSendTo блокирует вызывающий поток до завершения операции.
Если вы используете протокол, ориентированный на подключение, необходимо сначала вызвать Connectметод , BeginConnectAcceptили BeginAccept метод или BeginSendTo вызвать SocketException.
BeginSendToбудет игнорировать remoteEP параметр и отправлять данные в установленный EndPointConnectBeginConnectAcceptв , или BeginAccept метод.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с Connect помощью метода или BeginConnect метода перед вызовом SendTo. Это необходимо сделать только в том случае, если вы планируете вызвать BeginSend метод. При вызове Connect метода или BeginConnect метода перед вызовом SendToremoteEP параметр переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется. В этом случае базовый поставщик услуг назначит наиболее подходящий адрес локальной сети и номер порта. Используйте номер порта в нуле, если требуется, чтобы базовый поставщик услуг использовал бесплатный порт. Если необходимо определить назначенный адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после успешного EndSendTo завершения метода.
Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для него параметр SocketOptionName.Broadcastсокета. -Необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена EndSendToи SocketException вызовет исключение.
Если в качестве DontRoute параметра указать socketflags флаг, то отправляемые данные не будут перенаправлены.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки. Получив этот код, ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.