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