Compartilhar via


Socket.BeginSend Método

Definição

Envia dados de forma assíncrona para um Socket conectado.

Sobrecargas

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Envia dados de forma assíncrona para um Socket conectado.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Envia dados de forma assíncrona para um Socket conectado.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Envia dados de forma assíncrona para um Socket conectado.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Envia dados de forma assíncrona para um Socket conectado.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados de forma assíncrona para um Socket conectado.

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

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma matriz do tipo Byte que contém os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

callback
AsyncCallback

O delegado AsyncCallback.

state
Object

Um objeto que contém informações de estado para essa solicitação.

Retornos

Um IAsyncResult que faz referência ao envio assíncrono.

Exceções

buffers é null.

buffers está vazio.

.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSend ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSend. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSend método .

A operação assíncrona BeginSend deve ser concluída chamando o EndSend método . Normalmente, o método é invocado pelo AsyncCallback delegado. EndSend bloqueará o thread de chamada até que a operação seja concluída.

Embora pretenda protocolos orientados a conexões, BeginSend também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar BeginSendTo. Não há problema em usar BeginSendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar BeginSend fazendo outra chamada para Connect ou BeginConnect. Com protocolos sem conexão, você também deve ter certeza de que o tamanho do buffer não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSend gerará um SocketException.

Se você especificar o DontRoute sinalizador como o socketflags parâmetro , os dados que você está enviando não serão roteado.

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

state é uma instanciação de uma classe definida pelo usuário.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.

Confira também

Aplica-se a

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados de forma assíncrona para um Socket conectado.

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

Parâmetros

buffers
IList<ArraySegment<Byte>>

Uma matriz do tipo Byte que contém os dados a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.

callback
AsyncCallback

O delegado AsyncCallback.

state
Object

Um objeto que contém informações de estado para essa solicitação.

Retornos

Um IAsyncResult que faz referência ao envio assíncrono.

Exceções

buffers é null.

buffers está vazio.

.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSend ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSend. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSend método .

A operação assíncrona BeginSend deve ser concluída chamando o EndSend método . Normalmente, o método é invocado pelo AsyncCallback delegado. EndSend bloqueará o thread de chamada até que a operação seja concluída.

Embora pretenda protocolos orientados a conexões, BeginSend também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar BeginSendTo. Não há problema em usar BeginSendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar BeginSend fazendo outra chamada para Connect ou BeginConnect. Com protocolos sem conexão, você também deve ter certeza de que o tamanho do buffer não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSend gerará um SocketException.

Se você especificar o DontRoute sinalizador como o socketflags parâmetro , os dados que você está enviando não serão roteado.

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

state é uma instanciação de uma classe definida pelo usuário.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.

Confira também

Aplica-se a

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados de forma assíncrona para um Socket conectado.

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

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

offset
Int32

A posição de base zero no parâmetro buffer no qual começar a enviar dados.

size
Int32

O número de bytes a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

callback
AsyncCallback

O delegado AsyncCallback.

state
Object

Um objeto que contém informações de estado para essa solicitação.

Retornos

Um IAsyncResult que faz referência ao envio assíncrono.

Exceções

buffer é null.

.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.

offset é menor que 0.

- ou -

offset é menor que o tamanho de buffer.

- ou -

size é menor que 0.

- ou -

size é maior que o comprimento da subtração de buffer e do valor do parâmetro offset.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSend ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSend. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSend método .

A operação assíncrona BeginSend deve ser concluída chamando o EndSend método . Normalmente, o método é invocado pelo AsyncCallback delegado. EndSend bloqueará o thread de chamada até que a operação seja concluída.

Embora pretenda protocolos orientados a conexões, BeginSend também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar BeginSendTo. Não há problema em usar BeginSendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar BeginSend fazendo outra chamada para Connect ou BeginConnect. Com protocolos sem conexão, você também deve ter certeza de que o tamanho do buffer não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSend gerará um SocketException.

Se você especificar o DontRoute sinalizador como o socketflags parâmetro , os dados que você está enviando não serão roteado.

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

state é uma instanciação de uma classe definida pelo usuário.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.

Confira também

Aplica-se a

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Origem:
Socket.cs
Origem:
Socket.cs
Origem:
Socket.cs

Envia dados de forma assíncrona para um Socket conectado.

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

Parâmetros

buffer
Byte[]

Uma matriz do tipo Byte que contém os dados a serem enviados.

offset
Int32

A posição de base zero no parâmetro buffer no qual começar a enviar dados.

size
Int32

O número de bytes a serem enviados.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.

errorCode
SocketError

Um objeto SocketError que armazena o erro de soquete.

callback
AsyncCallback

O delegado AsyncCallback.

state
Object

Um objeto que contém informações de estado para essa solicitação.

Retornos

Um IAsyncResult que faz referência ao envio assíncrono.

Exceções

buffer é null.

.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.

offset é menor que 0.

- ou -

offset é menor que o tamanho de buffer.

- ou -

size é menor que 0.

- ou -

size é maior que o comprimento da subtração de buffer e do valor do parâmetro offset.

Comentários

Importante

Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin* e End*) para novo desenvolvimento. Em vez disso, use os Taskequivalentes baseados em .

Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSend ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSend. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSend método .

A operação assíncrona BeginSend deve ser concluída chamando o EndSend método . Normalmente, o método é invocado pelo AsyncCallback delegado. EndSend bloqueará o thread de chamada até que a operação seja concluída.

Embora pretenda protocolos orientados a conexões, BeginSend também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Se você estiver usando um protocolo sem conexão e planeja enviar dados para vários hosts diferentes, deverá usar BeginSendTo. Não há problema em usar BeginSendTo mesmo depois de estabelecer um host remoto padrão com Connect. Você também pode alterar o host remoto padrão antes de chamar BeginSend fazendo outra chamada para Connect ou BeginConnect. Com protocolos sem conexão, você também deve ter certeza de que o tamanho do buffer não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSend gerará um SocketException.

Se você especificar o DontRoute sinalizador como o socketflags parâmetro , os dados que você está enviando não serão roteado.

Observação

Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico.

Observação

Todas as E/S iniciadas por um determinado thread são canceladas quando esse thread é encerrado. Uma operação assíncrona pendente poderá falhar se o thread for encerrado antes da conclusão da operação.

Observação

state é uma instanciação de uma classe definida pelo usuário.

Observação

A conclusão bem-sucedida de um envio não indica que os dados foram entregues com êxito. Se nenhum espaço de buffer estiver disponível no sistema de transporte para manter os dados a serem transmitidos, o envio será bloqueado, a menos que o soquete tenha sido colocado no modo sem bloqueio.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.

Confira também

Aplica-se a