Socket.Connect Método

Definição

Estabelece uma ligação a um host remoto.

Sobrecargas

Name Description
Connect(String, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta.

Connect(IPAddress[], Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta.

Connect(IPAddress, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta.

Connect(EndPoint)

Estabelece uma ligação a um host remoto.

Connect(String, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta.

public:
 void Connect(System::String ^ host, int port);
public void Connect(string host, int port);
member this.Connect : string * int -> unit
Public Sub Connect (host As String, port As Integer)

Parâmetros

host
String

O nome do anfitrião remoto.

port
Int32

O número de porta do host remoto.

Exceções

host é null.

O número de porta não é válido.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

O soquete não pertence às InterNetwork famílias de ou.InterNetworkV6

O Socket foi colocado em estado de escuta ao chamar Listen(Int32).

Exemplos

O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.

// Synchronous connect using host name (resolved by the
// Connect call.)
public static void Connect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(host, port);
    Console.WriteLine("Connection established");
}

Observações

Se estiver a usar um protocolo orientado à ligação como o TCP, o Connect método estabelece sincronizadamente uma ligação de rede entre LocalEndPoint e o host remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.

Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

O Connect método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar um a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.

Se o IPv6 estiver ativado e o Connect(String, Int32) método for chamado para se ligar a um host que resolve para os endereços IPv6 e IPv4, a ligação ao endereço IPv6 será tentada primeiro antes do endereço IPv4. Isto pode ter o efeito de atrasar o tempo para estabelecer a ligação se o anfitrião não estiver a ouvir no endereço IPv6.

Note

Se estiver a usar um protocolo orientado a ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente irá atribuir o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.

Note

Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Connect(IPAddress[], Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta.

public:
 void Connect(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public void Connect(System.Net.IPAddress[] addresses, int port);
member this.Connect : System.Net.IPAddress[] * int -> unit
Public Sub Connect (addresses As IPAddress(), port As Integer)

Parâmetros

addresses
IPAddress[]

Os endereços IP do host remoto.

port
Int32

O número de porta do host remoto.

Exceções

addresses é null.

O número de porta não é válido.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

O soquete não pertence às InterNetwork famílias de ou.InterNetworkV6

O comprimento de addresses é zero.

O Socket foi colocado em estado de escuta ao chamar Listen(Int32).

Exemplos

O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.

// Synchronous connect using Dns.GetHostAddresses to
// resolve the host name.
public static void Connect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);
    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs, port);
    Console.WriteLine("Connection established");
}

Observações

Este método é normalmente usado imediatamente após uma chamada para GetHostAddresses, que pode devolver múltiplos endereços IP para um único host. Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.

Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Connect o método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.

Note

Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.

Note

Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Connect(IPAddress, Int32)

Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta.

public:
 void Connect(System::Net::IPAddress ^ address, int port);
public void Connect(System.Net.IPAddress address, int port);
member this.Connect : System.Net.IPAddress * int -> unit
Public Sub Connect (address As IPAddress, port As Integer)

Parâmetros

address
IPAddress

O endereço IP do host remoto.

port
Int32

O número de porta do host remoto.

Exceções

address é null.

O número de porta não é válido.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Este método é válido para soquetes nas InterNetwork famílias de ou.InterNetworkV6

O comprimento de address é zero.

O Socket foi colocado em estado de escuta ao chamar Listen(Int32).

Exemplos

O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.

// Synchronous connect using IPAddress to resolve the
// host name.
public static void Connect1(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs[0], port);
    Console.WriteLine("Connection established");
}

Observações

Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.

Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

Connect o método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.

Note

Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.

Note

Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Connect(EndPoint)

Estabelece uma ligação a um host remoto.

public:
 void Connect(System::Net::EndPoint ^ remoteEP);
public void Connect(System.Net.EndPoint remoteEP);
member this.Connect : System.Net.EndPoint -> unit
Public Sub Connect (remoteEP As EndPoint)

Parâmetros

remoteEP
EndPoint

E EndPoint isso representa o dispositivo remoto.

Exceções

remoteEP é null.

Ocorreu um erro ao tentar aceder ao soquete.

O Socket local foi encerrado.

Um chamador mais acima na pilha de chamadas não tem permissão para a operação solicitada.

O Socket foi colocado em estado de escuta ao chamar Listen(Int32).

Exemplos

O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.

// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);
    ' .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint)
    
    ' This is how you can determine whether a socket is still connected.
    Dim blockingState As Boolean = client.Blocking
    Try
        Dim tmp(0) As Byte
        
        client.Blocking = False
        client.Send(tmp, 0, 0)
        Console.WriteLine("Connected!")
    Catch e As SocketException
        ' 10035 == WSAEWOULDBLOCK
        If e.NativeErrorCode.Equals(10035) Then
            Console.WriteLine("Still Connected, but the Send would block")
        Else
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
        End If
    Finally
        client.Blocking = blockingState
    End Try
    
    Console.WriteLine("Connected: {0}", client.Connected)

End Sub

Observações

Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect, pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.

Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se ligar, Connectquaisquer datagramas que cheguem de um endereço diferente do padrão especificado serão descartados. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.

O Connect método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.

Note

Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.

Note

Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.

Ver também

Aplica-se a