Socket.BeginSend Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
O Socket foi fechado.
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 Task
equivalentes 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
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Realizando marshaling de um delegado como um método de retorno de chamada
- Exemplo de soquete de cliente assíncrono
- Exemplo de soquete de servidor assíncrono
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.
O Socket foi fechado.
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 Task
equivalentes 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
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Realizando marshaling de um delegado como um método de retorno de chamada
- Exemplo de soquete de cliente assíncrono
- Exemplo de soquete de servidor assíncrono
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
- 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
.
O Socket foi fechado.
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 Task
equivalentes 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
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Realizando marshaling de um delegado como um método de retorno de chamada
- Exemplo de soquete de cliente assíncrono
- Exemplo de soquete de servidor assíncrono
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
- 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
.
O Socket foi fechado.
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 Task
equivalentes 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
- Connect(EndPoint)
- AsyncCallback
- EndSend(IAsyncResult)
- Realizando marshaling de um delegado como um método de retorno de chamada
- Exemplo de soquete de cliente assíncrono
- Exemplo de soquete de servidor assíncrono