Socket.SendToAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
| Имя | Описание |
|---|---|
| SendToAsync(SocketAsyncEventArgs) |
Отправляет данные асинхронно на конкретный удаленный узел. |
| SendToAsync(ArraySegment<Byte>, EndPoint) |
Отправляет данные на указанный удаленный узел. |
| SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint) |
Отправляет данные на указанный удаленный узел. |
| SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken) |
Отправляет данные на указанный удаленный узел. |
| SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken) |
Отправляет данные на указанный удаленный узел. |
| SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken) |
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags. |
SendToAsync(SocketAsyncEventArgs)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет данные асинхронно на конкретный удаленный узел.
public:
bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean
Параметры
Объект SocketAsyncEventArgs , используемый для этой асинхронной операции сокета.
Возвращаемое значение
e будет возникать после завершения операции.
false Если операция ввода-вывода завершилась синхронно. В этом случае событие параметра Completed не будет вызываться, и e объект, переданный в качестве параметра, e может быть рассмотрен сразу после вызова метода, чтобы получить результат операции.
Исключения
Значение RemoteEndPoint null не может быть пустым.
Операция сокета уже выполнялась с помощью объекта, указанного SocketAsyncEventArgs в параметре e .
Он Socket был закрыт.
Указанный протокол ориентирован на подключение, но Socket еще не подключен.
Комментарии
Метод SendToAsync запускает асинхронную операцию отправки на удаленный узел, указанный в SocketAsyncEventArgs.RemoteEndPoint свойстве e параметра.
SendToAsync Вызов метода дает возможность отправлять данные в отдельном потоке выполнения. Хотя этот метод предназначен для протоколов без подключения, SendToAsync работает как с бессерверными, так и с протоколами, ориентированными на подключение.
Чтобы получить уведомление о завершении, необходимо создать метод обратного вызова, который реализует делегат EventHandler<SocketAsyncEventArgs> и присоединить обратный вызов к событию SocketAsyncEventArgs.Completed .
Для успешного System.Net.Sockets.SocketAsyncEventArgs вызова этого метода требуются следующие свойства и события объекта:
Вызывающий SocketAsyncEventArgs.UserToken объект может задать свойство любому объекту пользовательского SendToAsync состояния, требуемому перед вызовом метода, чтобы информация была извлечена в методе обратного вызова. Если обратный вызов требует больше информации, чем один объект, можно создать небольшой класс для хранения других необходимых сведений о состоянии в качестве членов.
Если вы используете протокол, ориентированный на подключение, необходимо сначала вызвать Acceptметод , , AcceptAsync, BeginConnectBeginAcceptConnectили ConnectAsync метод. В противном случае SendToAsync вызовет SocketException. При использовании протокола, ориентированного на подключение, SendToAsync метод будет игнорировать SocketAsyncEventArgs.RemoteEndPoint свойство и отправлять данные System.Net.EndPoint в установленные в , AcceptAcceptAsync, BeginAccept, BeginConnectConnectили ConnectAsync методе.
Если вы используете протокол без подключения, вам не нужно устанавливать удаленный узел по умолчанию с BeginConnectConnectпомощью метода или ConnectAsync метода перед вызовомSendToAsync. Это необходимо сделать только в том случае, если вы планируете вызвать BeginSend методы или SendAsync методы. При вызове BeginConnectConnectметода или ConnectAsync метода перед вызовом SendToAsyncSocketAsyncEventArgs.RemoteEndPoint свойство переопределит указанный удаленный узел по умолчанию только для этой операции отправки. Для вызова Bind метода также не требуется. В этом случае базовый поставщик услуг назначит наиболее подходящий IP-адрес локальной сети и номер порта. Используйте номер порта в нуле, если требуется, чтобы базовый поставщик услуг использовал бесплатный порт. Если необходимо определить назначенный IP-адрес локальной сети и номер порта, можно использовать LocalEndPoint свойство после SocketAsyncEventArgs.Completed сигнала события и вызова связанных делегатов.
Если вы хотите отправить данные на широковещательный адрес, необходимо сначала вызвать SetSocketOption метод и задать для параметра SocketOptionName.Broadcast сокета значение true. Необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена SocketExceptionи SendToAsync вызовет исключение.
Если в свойстве SocketAsyncEventArgs.SocketFlags указать флаг DontRoute, данные, которые вы отправляете, не будут перенаправлены.
Для сокетов, ориентированных на сообщения, необходимо не превышать максимальный размер сообщения базового транспорта. Если размер буфера превышает максимальный размер пакета базового поставщика услуг, то диаграмма данных не отправляется и SendToAsync вызывает исключение SocketException. Успешное завершение SendToAsync метода не указывает, что данные были успешно доставлены.
См. также раздел
Применяется к
SendToAsync(ArraySegment<Byte>, EndPoint)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Отправляет данные на указанный удаленный узел.
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync(ArraySegment<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), remoteEP As EndPoint) As Task(Of Integer)
Параметры
- buffer
- ArraySegment<Byte>
Буфер для отправки данных.
- remoteEP
- EndPoint
Удаленный узел, на который отправляются данные.
Возвращаемое значение
Асинхронная задача, которая завершается числом отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Применяется к
SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Отправляет данные на указанный удаленный узел.
public:
System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Task(Of Integer)
Параметры
- buffer
- ArraySegment<Byte>
Буфер для отправки данных.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags, которые будут использоваться при отправке данных.
- remoteEP
- EndPoint
Удаленный узел, на который отправляются данные.
Возвращаемое значение
Асинхронная задача, которая завершается числом отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Применяется к
SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Отправляет данные на указанный удаленный узел.
public System.Threading.Tasks.ValueTask<int> SendToAsync(ReadOnlyMemory<byte> buffer, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Параметры
- buffer
- ReadOnlyMemory<Byte>
Буфер для отправки данных.
- remoteEP
- EndPoint
Удаленный узел, на который отправляются данные.
- cancellationToken
- CancellationToken
Маркер отмены, который можно использовать для отмены асинхронной операции.
Возвращаемое значение
Асинхронная задача, которая завершается числом отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.
Применяется к
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Отправляет данные на указанный удаленный узел.
public System.Threading.Tasks.ValueTask<int> SendToAsync(ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Параметры
- buffer
- ReadOnlyMemory<Byte>
Буфер для отправки данных.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags, которые будут использоваться при отправке данных.
- remoteEP
- EndPoint
Удаленный узел, на который отправляются данные.
- cancellationToken
- CancellationToken
Маркер отмены, который можно использовать для отмены асинхронной операции.
Возвращаемое значение
Асинхронная задача, которая завершается числом отправленных байтов.
Исключения
remoteEP равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.
Применяется к
SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
- Исходный код:
- Socket.Tasks.cs
Отправляет данные в определенную конечную точку с помощью указанной SocketFlags.
public System.Threading.Tasks.ValueTask<int> SendToAsync(ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
Параметры
- buffer
- ReadOnlyMemory<Byte>
Буфер для отправки данных.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags , которое будет использоваться при отправке данных.
- socketAddress
- SocketAddress
Объект SocketAddress , представляющий место назначения для данных.
- cancellationToken
- CancellationToken
Маркер отмены, который можно использовать для отмены асинхронной операции.
Возвращаемое значение
Асинхронная задача, которая завершается числом отправленных байтов.
Исключения
socketAddress равно null.
Произошла ошибка при попытке доступа к сокету.
Он Socket был закрыт.
Маркер отмены был отменен. Это исключение хранится в возвращаемой задаче.