Socket.ConnectAsync 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.
Inicia uma solicitação assíncrona para uma conexão com um host remoto.
Sobrecargas
| Nome | Description |
|---|---|
| ConnectAsync(SocketAsyncEventArgs) |
Inicia uma solicitação assíncrona para uma conexão com um host remoto. |
| ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) |
Inicia uma solicitação assíncrona para uma conexão com um host remoto. |
ConnectAsync(SocketAsyncEventArgs)
Inicia uma solicitação assíncrona para uma conexão com um host remoto.
public:
bool ConnectAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ConnectAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ConnectAsync (e As SocketAsyncEventArgs) As Boolean
Parâmetros
O SocketAsyncEventArgs objeto a ser usado para esta operação de soquete assíncrona.
Retornos
true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será gerado após a conclusão da operação.
false se a operação de E/S for concluída de forma síncrona. Nesse caso, Completed o e evento no parâmetro não será gerado e o e objeto passado como um parâmetro poderá ser examinado imediatamente após a chamada do método retornar para recuperar o resultado da operação.
Exceções
Um argumento não é válido. Essa exceção ocorrerá se vários buffers forem especificados, a BufferList propriedade não será nula.
O e parâmetro não pode ser nulo e não RemoteEndPoint pode ser nulo.
A Socket escuta ou uma operação de soquete já estava em andamento usando o SocketAsyncEventArgs objeto especificado no e parâmetro.
Erro ao tentar acessar o soquete.
O ponto de extremidade local e a RemoteEndPoint família de endereços não são iguais.
O Socket foi fechado.
Um chamador mais alto na pilha de chamadas não tem permissão para a operação solicitada.
Comentários
Se você estiver usando um protocolo orientado à conexão, o ConnectAsync método iniciará uma solicitação assíncrona para uma conexão com o host remoto. Se você estiver usando um protocolo sem conexão, ConnectAsync estabelecerá um host remoto padrão.
Para ser notificado sobre a conclusão, você deve criar um método de retorno de chamada que implemente o delegado EventHandler<SocketAsyncEventArgs> e anexe o retorno de chamada ao SocketAsyncEventArgs.Completed evento.
O chamador deve definir a SocketAsyncEventArgs.RemoteEndPoint propriedade para o IPEndPoint host remoto ao qual se conectar.
O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade para qualquer objeto de estado de usuário desejado antes de chamar o ConnectAsync método, para que as informações sejam recuperáveis no método de retorno de chamada. Se o retorno de chamada precisar de mais informações do que um único objeto, uma classe pequena poderá ser criada para manter as outras informações de estado necessárias como membros.
Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar ConnectAsync antes de enviar e receber dados. Você pode usar SendToAsync e ReceiveFromAsync se comunicar com um host remoto. Se você chamar ConnectAsync, todos os datagrams que chegarem de um endereço diferente do padrão especificado serão descartados. Se você quiser alterar o host remoto padrão, chame o ConnectAsync método novamente com o ponto de extremidade desejado.
Se você quiser definir o host remoto padrão para um endereço de transmissão, primeiro chame SetSocketOption e defina Difusão como true. Se isso não for feito, o ConnectAsync método lançará um SocketException.
As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessários:
Opcionalmente, um buffer pode ser fornecido que será enviado atomicamente no soquete depois que o ConnectAsync método for bem-sucedido. Nesse caso, a SocketAsyncEventArgs.Buffer propriedade precisa ser definida como o buffer que contém os dados a serem enviados e a SocketAsyncEventArgs.Count propriedade precisa ser definida como o número de bytes de dados a serem enviados do buffer. Depois que uma conexão é estabelecida, esse buffer de dados é enviado.
Se você estiver usando um protocolo orientado à conexão e não chamar antes de chamar BindConnectAsync, o provedor de serviços subjacente atribuirá o endereço de rede local e o número de porta mais apropriados.
Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço IP de rede local e um número de porta até que você chame os métodos ou SendAsync os ReceiveAsync métodos.
O ConnectAsync método será gerado se a família de endereços e NotSupportedException a Socket família de endereços não forem a mesma família de endereçosSocketAsyncEventArgs.RemoteEndPoint.
Note
Se você receber um SocketException ao chamar esse método, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Confira também
Aplica-se a
ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)
Inicia uma solicitação assíncrona para uma conexão com um host remoto.
public:
static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean
Parâmetros
- socketType
- SocketType
Um dos SocketType valores.
- protocolType
- ProtocolType
Um dos ProtocolType valores.
O SocketAsyncEventArgs objeto a ser usado para esta operação de soquete assíncrona.
Retornos
true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será gerado após a conclusão da operação.
false se a operação de E/S for concluída de forma síncrona. Nesse caso, Completed o e evento no parâmetro não será gerado e o e objeto passado como um parâmetro poderá ser examinado imediatamente após a chamada do método retornar para recuperar o resultado da operação.
Exceções
Um argumento não é válido. Essa exceção ocorrerá se vários buffers forem especificados, a BufferList propriedade não será nula.
O e parâmetro não pode ser nulo e não RemoteEndPoint pode ser nulo.
A Socket escuta ou uma operação de soquete já estava em andamento usando o SocketAsyncEventArgs objeto especificado no e parâmetro.
Erro ao tentar acessar o soquete.
O ponto de extremidade local e a RemoteEndPoint família de endereços não são iguais.
O Socket foi fechado.
Um chamador mais alto na pilha de chamadas não tem permissão para a operação solicitada.
Comentários
Se você estiver usando um protocolo orientado à conexão, o método M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs) iniciará uma solicitação assíncrona para uma conexão com o host remoto. Se você estiver usando um protocolo sem conexão, ConnectAsync estabelecerá um host remoto padrão especificado pelos parâmetros e socketType pelos protocolType parâmetros.
Para ser notificado sobre a conclusão, você deve criar um método de retorno de chamada que implemente o delegado EventHandler<SocketAsyncEventArgs> e anexe o retorno de chamada ao SocketAsyncEventArgs.Completed evento.
O chamador deve definir a SocketAsyncEventArgs.RemoteEndPoint propriedade para o IPEndPoint host remoto ao qual se conectar.
O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade para qualquer objeto de estado de usuário desejado antes de chamar o ConnectAsync método, para que as informações sejam recuperáveis no método de retorno de chamada. Se o retorno de chamada precisar de mais informações do que um único objeto, uma classe pequena poderá ser criada para manter as outras informações de estado necessárias como membros.
Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar ConnectAsync antes de enviar e receber dados. Você pode usar SendToAsync e ReceiveFromAsync se comunicar com um host remoto. Se você chamar ConnectAsync, todos os datagrams que chegarem de um endereço diferente do padrão especificado serão descartados. Se você quiser alterar o host remoto padrão, chame o ConnectAsync método novamente com o ponto de extremidade desejado.
Se você quiser definir o host remoto padrão para um endereço de transmissão, primeiro chame SetSocketOption e defina Difusão como true. Se isso não for feito, o ConnectAsync método lançará um SocketException.
As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessários:
Opcionalmente, um buffer pode ser fornecido que será enviado atomicamente no soquete depois que o ConnectAsync método for bem-sucedido. Nesse caso, a SocketAsyncEventArgs.Buffer propriedade precisa ser definida como o buffer que contém os dados a serem enviados e a SocketAsyncEventArgs.Count propriedade precisa ser definida como o número de bytes de dados a serem enviados do buffer. Depois que uma conexão é estabelecida, esse buffer de dados é enviado.
Se você estiver usando um protocolo orientado à conexão e não chamar antes de chamar BindConnectAsync, o provedor de serviços subjacente atribuirá o endereço de rede local e o número de porta mais apropriados.
Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço IP de rede local e um número de porta até que você chame os métodos ou SendAsync os ReceiveAsync métodos.
O ConnectAsync método será gerado se a família de endereços e NotSupportedException a Socket família de endereços não forem a mesma família de endereçosSocketAsyncEventArgs.RemoteEndPoint.
Note
Se você receber um SocketException ao chamar esse método, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.