Partilhar via


Socket.Connect Método

Definição

Estabelece uma conexão com um host remoto.

Sobrecargas

Nome Description
Connect(EndPoint)

Estabelece uma conexão com um host remoto.

Connect(IPAddress, Int32)

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

Connect(IPAddress[], Int32)

Estabelece uma conexão com um host remoto. O host é especificado por uma matriz de endereços IP e um número de porta.

Connect(String, Int32)

Estabelece uma conexão com um host remoto. O host é especificado por um nome de host e um número de porta.

Connect(EndPoint)

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

Estabelece uma conexão com 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

Um EndPoint que representa o dispositivo remoto.

Exceções

remoteEP é null.

Erro ao tentar acessar o soquete.

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

O Socket foi colocado em um estado de escuta chamando Listen(Int32).

Exemplos

O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexã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

Comentários

Se você estiver usando um protocolo orientado à conexão, como o TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint o ponto de extremidade remoto especificado e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de ligar Connect, você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método.

Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom se comunicar de forma síncrona com um host remoto. Se você chamar Connect, todos os datagrams que chegarem de um endereço diferente do padrão especificado serão descartados. Se você quiser definir seu host remoto padrão para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast, ou Connect gerará um SocketException. Se você receber um SocketException, 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.

O Connect método será bloqueado, a menos que você defina especificamente a Blocking propriedade para false antes da chamada Connect. Se você estiver usando um protocolo orientado à conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode 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. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por uma conexão orientada Socket, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.

Observação

Se você estiver usando um protocolo orientado à conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, ligue Connect novamente com o ponto de extremidade desejado.

Observação

Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.

Observação

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

Confira também

Aplica-se a

Connect(IPAddress, Int32)

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

Estabelece uma conexão com 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 da porta do host remoto.

Exceções

address é null.

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

Erro ao tentar acessar o soquete.

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

O comprimento é address zero.

O Socket foi colocado em um estado de escuta chamando Listen(Int32).

Exemplos

O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexã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");
}

Comentários

Se você estiver usando um protocolo orientado à conexão, como o TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint o ponto de extremidade remoto especificado e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de ligar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método.

Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom se comunicar de forma síncrona com um host remoto. Se você chamar Connect qualquer datagrama que chegue de um endereço diferente do padrão especificado, será descartado. Se você quiser definir seu host remoto padrão para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast, ou Connect gerará um SocketException. Se você receber um SocketException, 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.

Connect o método será bloqueado, a menos que você defina especificamente a Blocking propriedade para false antes da chamada Connect. Se você estiver usando um protocolo orientado à conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode 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. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por uma conexão orientada Socket, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.

Observação

Se você estiver usando um protocolo orientado à conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, ligue Connect novamente com o ponto de extremidade desejado.

Observação

Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.

Observação

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

Aplica-se a

Connect(IPAddress[], Int32)

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

Estabelece uma conexão com um host remoto. O host é especificado por uma matriz 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 da porta do host remoto.

Exceções

addresses é null.

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

Erro ao tentar acessar o soquete.

O soquete não está nas InterNetwork famílias.InterNetworkV6

O comprimento é addresses zero.

O Socket foi colocado em um estado de escuta chamando Listen(Int32).

Exemplos

O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexã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");
}

Comentários

Esse método normalmente é usado imediatamente após uma chamada para GetHostAddresses, que pode retornar vários endereços IP para um único host. Se você estiver usando um protocolo orientado à conexão, como o TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint o ponto de extremidade remoto especificado e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de ligar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método.

Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom se comunicar de forma síncrona com um host remoto. Se você chamar Connect qualquer datagrama que chegue de um endereço diferente do padrão especificado, será descartado. Se você quiser definir seu host remoto padrão para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast, ou Connect gerará um SocketException. Se você receber um SocketException, 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.

Connect o método será bloqueado, a menos que você defina especificamente a Blocking propriedade para false antes da chamada Connect. Se você estiver usando um protocolo orientado à conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode 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. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por uma conexão orientada Socket, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.

Observação

Se você estiver usando um protocolo orientado à conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, ligue Connect novamente com o ponto de extremidade desejado.

Observação

Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.

Observação

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

Aplica-se a

Connect(String, Int32)

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

Estabelece uma conexão com 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 host remoto.

port
Int32

O número da porta do host remoto.

Exceções

host é null.

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

Erro ao tentar acessar o soquete.

O soquete não está nas InterNetwork famílias.InterNetworkV6

O Socket foi colocado em um estado de escuta chamando Listen(Int32).

Exemplos

O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexã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");
}

Comentários

Se você estiver usando um protocolo orientado à conexão, como o TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint o host remoto especificado e o host remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de ligar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método.

Se você estiver usando um protocolo sem conexão, como UDP, não precisará ligar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom se comunicar de forma síncrona com um host remoto. Se você chamar Connect qualquer datagrama que chegue de um endereço diferente do padrão especificado, será descartado. Se você quiser definir seu host remoto padrão para um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcast, ou Connect gerará um SocketException. Se você receber um SocketException, 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.

O Connect método será bloqueado, a menos que você defina especificamente a Blocking propriedade para false antes da chamada Connect. Se você estiver usando um protocolo orientado à conexão como o TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode 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. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por uma conexão orientada Socket, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.

Se o IPv6 estiver habilitado e o Connect(String, Int32) método for chamado para se conectar a um host que seja resolvido para endereços IPv6 e IPv4, a conexão com o endereço IPv6 será tentada primeiro antes do endereço IPv4. Isso pode ter o efeito de atrasar o tempo para estabelecer a conexão se o host não estiver escutando no endereço IPv6.

Observação

Se você estiver usando um protocolo orientado à conexão e não tiver ligado antes da chamada BindConnect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, ligue Connect novamente com o ponto de extremidade desejado.

Observação

Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.

Observação

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

Aplica-se a