Compartilhar via


Socket.Connect Método

Definição

Estabelece uma conexão com o host remoto.

Sobrecargas

Connect(EndPoint)

Estabelece uma conexão com o host remoto.

Connect(IPAddress, Int32)

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

Connect(IPAddress[], Int32)

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

Connect(String, Int32)

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

Connect(EndPoint)

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

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

Ocorreu um 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.

client->Connect( anEndPoint );
if (  !client->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
   
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
   array<Byte>^tmp = gcnew array<Byte>(1);
   client->Blocking = false;
   client->Send( tmp, 0, static_cast<SocketFlags>(0) );
   Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e ) 
{
   // 10035 == WSAEWOULDBLOCK
   if ( e->NativeErrorCode.Equals( 10035 ) )
   {
      Console::WriteLine( "Connected from an exception!" );
   }
   else
   {
      Console::WriteLine( "Disconnected: {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.
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 a conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint 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 chamar 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á chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect, todos os datagramas que chegarem de um endereço diferente do padrão especificado serão descartados. Se você quiser definir o host remoto padrão como um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou 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 como false antes de chamar Connect. Se você estiver usando um protocolo orientado a 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 um orientado Socketa conexão, 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 a 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, chame 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 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.

Confira também

Aplica-se a

Connect(IPAddress, Int32)

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

Estabelece uma conexão com o host remoto. O host é especificado por um endereço IP e um número da 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 é inválido.

Ocorreu um erro ao tentar acessar o soquete.

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

O comprimento de 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.
static void Connect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs[ 0 ], port );
   Console::WriteLine( "Connection established" );
}
// 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 a conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint 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 chamar 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á chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para 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 o host remoto padrão como um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou 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 como false antes de chamar Connect. Se você estiver usando um protocolo orientado a 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 um orientado Socketa conexão, 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 a 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, chame 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 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.

Aplica-se a

Connect(IPAddress[], Int32)

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

Estabelece uma conexão com o host remoto. O host é especificado por uma matriz de endereços IP e um número da 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 é inválido.

Ocorreu um erro ao tentar acessar o soquete.

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

O comprimento de 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 Dns.ResolveToAddresses to 
// resolve the host name.
static void Connect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs, port );
   Console::WriteLine( "Connection established" );
}
// 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 TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint 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 chamar 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á chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect todos os datagrams que chegam de um endereço diferente do padrão especificado, será descartado. Se você quiser definir o host remoto padrão como um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou 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 como false antes de chamar Connect. Se você estiver usando um protocolo orientado a conexões 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 um orientado Socketà conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando o terminou de Socket se conectar.

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, chame 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 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.

Aplica-se a

Connect(String, Int32)

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

Estabelece uma conexão com o host remoto. O host é especificado por um nome do host e um número da 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 é inválido.

Ocorreu um erro ao tentar acessar o soquete.

O soquete não está nas InterNetwork famílias ou 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.)
static void Connect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( host, port );
   Console::WriteLine( "Connection established" );
}
// 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 para conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint e o host remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de chamar 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á chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect todos os datagrams que chegam de um endereço diferente do padrão especificado, será descartado. Se você quiser definir o host remoto padrão como um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou 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 como false antes de chamar Connect. Se você estiver usando um protocolo orientado para 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 um orientado Socketà conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando o terminou de Socket se conectar.

Se iPv6 estiver habilitado e o Connect(String, Int32) método for chamado para se conectar a um host que resolva 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 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, chame 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 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.

Aplica-se a