Socket.BeginSend Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Асинхронно отправляет данные в подключенное Socket.
Перегрузки
| Имя | Описание |
|---|---|
| BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) |
Асинхронно отправляет данные в подключенное Socket. |
| BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) |
Асинхронно отправляет данные в подключенное Socket. |
| BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) |
Асинхронно отправляет данные в подключенное Socket. |
| BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) |
Асинхронно отправляет данные в подключенное Socket. |
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Асинхронно отправляет данные в подключенное Socket.
public:
IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- buffers
- IList<ArraySegment<Byte>>
Массив типа Byte , содержащий данные для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронную отправку.
Исключения
buffers равно null.
buffers значение пусто.
Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету. См. раздел примечаний ниже.
Он Socket был закрыт.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginSend для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginSend. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginSend.
Асинхронная BeginSend операция должна выполняться путем вызова EndSend метода. Как правило, метод вызывается делегатом AsyncCallback . EndSend блокирует вызывающий поток до завершения операции.
Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что сначала вызывается Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла Connectпо умолчанию. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена BeginSendи SocketException вызовет исключение.
Если в качестве DontRoute параметра указать socketflags флаг, то отправляемые данные не будут перенаправлены.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки.
Замечание
Все операции ввода-вывода, инициированные заданным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Замечание
state — это создание экземпляра определяемого пользователем класса.
Замечание
Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство не доступно в транспортной системе для хранения передаваемых данных, отправка будет блокироваться, если сокет не помещается в неблокировочный режим.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.
См. также раздел
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Маршалинг делегата в качестве метода обратного вызова
- Пример асинхронного сокета клиента
- Пример сокета асинхронного сервера
Применяется к
BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Асинхронно отправляет данные в подключенное Socket.
public:
IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- buffers
- IList<ArraySegment<Byte>>
Массив типа Byte , содержащий данные для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- errorCode
- SocketError
SocketError Объект, который хранит ошибку сокета.
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронную отправку.
Исключения
buffers равно null.
buffers значение пусто.
Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету. См. раздел примечаний ниже.
Он Socket был закрыт.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginSend для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginSend. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginSend.
Асинхронная BeginSend операция должна выполняться путем вызова EndSend метода. Как правило, метод вызывается делегатом AsyncCallback . EndSend блокирует вызывающий поток до завершения операции.
Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что сначала вызывается Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла Connectпо умолчанию. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена BeginSendи SocketException вызовет исключение.
Если в качестве DontRoute параметра указать socketflags флаг, то отправляемые данные не будут перенаправлены.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки.
Замечание
Все операции ввода-вывода, инициированные заданным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Замечание
state — это создание экземпляра определяемого пользователем класса.
Замечание
Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство не доступно в транспортной системе для хранения передаваемых данных, отправка будет блокироваться, если сокет не помещается в неблокировочный режим.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.
См. также раздел
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Маршалинг делегата в качестве метода обратного вызова
- Пример асинхронного сокета клиента
- Пример сокета асинхронного сервера
Применяется к
BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Асинхронно отправляет данные в подключенное Socket.
public:
IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- offset
- Int32
Отсчитываемая от нуля позиция в параметре buffer , с которого начинается отправка данных.
- size
- Int32
Количество байтов для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронную отправку.
Исключения
buffer равно null.
Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету. См. раздел примечаний ниже.
offset меньше 0.
–или–
offset меньше длины buffer.
–или–
size меньше 0.
–или–
size больше длины buffer минус значения offset параметра.
Он Socket был закрыт.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginSend для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginSend. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginSend.
Асинхронная BeginSend операция должна выполняться путем вызова EndSend метода. Как правило, метод вызывается делегатом AsyncCallback . EndSend блокирует вызывающий поток до завершения операции.
Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что сначала вызывается Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла Connectпо умолчанию. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена BeginSendи SocketException вызовет исключение.
Если в качестве DontRoute параметра указать socketflags флаг, то отправляемые данные не будут перенаправлены.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки.
Замечание
Все операции ввода-вывода, инициированные заданным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Замечание
state — это создание экземпляра определяемого пользователем класса.
Замечание
Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство не доступно в транспортной системе для хранения передаваемых данных, отправка будет блокироваться, если сокет не помещается в неблокировочный режим.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.
См. также раздел
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Маршалинг делегата в качестве метода обратного вызова
- Пример асинхронного сокета клиента
- Пример сокета асинхронного сервера
Применяется к
BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Асинхронно отправляет данные в подключенное Socket.
public:
IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Параметры
- offset
- Int32
Отсчитываемая от нуля позиция в параметре buffer , с которого начинается отправка данных.
- size
- Int32
Количество байтов для отправки.
- socketFlags
- SocketFlags
Побитовое сочетание значений SocketFlags .
- errorCode
- SocketError
SocketError Объект, который хранит ошибку сокета.
- callback
- AsyncCallback
Делегат AsyncCallback .
- state
- Object
Объект, содержащий сведения о состоянии для этого запроса.
Возвращаемое значение
Объект, IAsyncResult ссылающийся на асинхронную отправку.
Исключения
buffer равно null.
Только платформа .NET Framework: произошла ошибка при попытке доступа к сокету. См. раздел примечаний ниже.
offset меньше 0.
–или–
offset меньше длины buffer.
–или–
size меньше 0.
–или–
size больше длины buffer минус значения offset параметра.
Он Socket был закрыт.
Комментарии
Это важно
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте Taskэквиваленты на основе.
Вы можете передать обратный вызов, который реализуется AsyncCallbackBeginSend для получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек завершает операцию синхронно, обратный вызов будет выполняться во время вызова BeginSend. В этом случае CompletedSynchronously для возвращаемого IAsyncResult свойства будет задано true значение, указывающее, что метод завершился синхронно.
AsyncState Используйте свойство IAsyncResult объекта состояния, переданного методуBeginSend.
Асинхронная BeginSend операция должна выполняться путем вызова EndSend метода. Как правило, метод вызывается делегатом AsyncCallback . EndSend блокирует вызывающий поток до завершения операции.
Хотя он предназначен для протоколов, ориентированных на подключение, BeginSend также работает для протоколов без подключения, при условии, что сначала вызывается Connect или BeginConnect метод для установки удаленного узла по умолчанию. Если вы используете протокол без подключения и планируете отправлять данные на несколько разных узлов, следует использовать BeginSendTo. Это нормально использовать BeginSendTo даже после установки удаленного узла Connectпо умолчанию. Вы также можете изменить удаленный узел по умолчанию перед вызовом BeginSend , выполнив другой вызов Connect или BeginConnect. При использовании протоколов без подключения необходимо также убедиться, что размер буфера не превышает максимальный размер пакета базового поставщика услуг. Если это так, то диаграмма данных не будет отправлена BeginSendи SocketException вызовет исключение.
Если в качестве DontRoute параметра указать socketflags флаг, то отправляемые данные не будут перенаправлены.
Замечание
При получении SocketExceptionсвойства используйте SocketException.ErrorCode свойство для получения определенного кода ошибки.
Замечание
Все операции ввода-вывода, инициированные заданным потоком, отменяются при выходе из этого потока. Ожидающая асинхронная операция может завершиться ошибкой, если поток завершится до завершения операции.
Замечание
state — это создание экземпляра определяемого пользователем класса.
Замечание
Успешное завершение отправки не указывает, что данные были успешно доставлены. Если буферное пространство не доступно в транспортной системе для хранения передаваемых данных, отправка будет блокироваться, если сокет не помещается в неблокировочный режим.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.
Замечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретный асинхронный Socket метод, Socket конкретный экземпляр и конкретный обратный вызов), последующие использование этого контекста увидит улучшение производительности.
См. также раздел
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Маршалинг делегата в качестве метода обратного вызова
- Пример асинхронного сокета клиента
- Пример сокета асинхронного сервера