Comparteix a través de


Socket.Connect Método

Definición

Establece una conexión a un host remoto.

Sobrecargas

Connect(EndPoint)

Establece una conexión a un host remoto.

Connect(IPAddress, Int32)

Establece una conexión a un host remoto. El host se especifica mediante una dirección IP y un número de puerto.

Connect(IPAddress[], Int32)

Establece una conexión a un host remoto. El host se especifica mediante una matriz de direcciones IP y un número de puerto.

Connect(String, Int32)

Establece una conexión a un host remoto. El host se especifica mediante un nombre de host y un número de puerto.

Connect(EndPoint)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Establece una conexión a un 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

EndPoint que representa el dispositivo remoto.

Excepciones

remoteEP es null.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Un llamador de la pila de llamadas no tiene permiso para la operación solicitada.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32).

Ejemplos

El ejemplo de código siguiente se conecta a un punto de conexión remoto y, a continuación, comprueba la conexión.

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

Comentarios

Si usa un protocolo orientado a la conexión como TCP, el Connect método establece de forma sincrónica una conexión de red entre LocalEndPoint y el punto de conexión remoto especificado. Si usa un protocolo sin conexión, Connect establece un host remoto predeterminado. Después de llamar Connecta , puede enviar datos al dispositivo remoto con el Send método o recibir datos del dispositivo remoto con el Receive método .

Si usa un protocolo sin conexión como UDP, no tiene que llamar Connect a antes de enviar y recibir datos. Puede usar SendTo y ReceiveFrom para comunicarse sincrónicamente con un host remoto. Si llama a Connect, se descartarán los datagramas que lleguen desde una dirección distinta del valor predeterminado especificado. Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción SocketOptionName.Broadcastde socket en o Connect producirá una SocketExceptionexcepción . Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

El Connect método se bloqueará, a menos que establezca específicamente la Blocking propiedad en false antes de llamar Connecta . Si usa un protocolo orientado a la conexión como TCP y deshabilita el bloqueo, producirá un SocketException elemento Connect porque necesita tiempo para realizar la conexión. Los protocolos sin conexión no producirán una excepción porque simplemente establecen un host remoto predeterminado. Puede usar SocketException.ErrorCode para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error. Si el error devolvió WSAEWOULDBLOCK, la conexión de host remota se ha iniciado mediante una conexión orientada Socketa la conexión, pero aún no se ha completado correctamente. Use el Poll método para determinar cuándo finaliza la Socket conexión.

Nota

Si usa un protocolo orientado a la conexión y no llamó Bind a antes de llamar a Connect, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto. Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección de red local y un número de puerto hasta que complete una operación de envío o recepción. Si desea cambiar el host remoto predeterminado, llame Connect de nuevo con el punto de conexión deseado.

Nota

Si el socket se ha desconectado anteriormente, no puede usar este método para restaurar la conexión. Use uno de los métodos asincrónicos BeginConnect para volver a conectarse. Se trata de una limitación del proveedor subyacente.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

Connect(IPAddress, Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Establece una conexión a un host remoto. El host se especifica mediante una dirección IP y un número de puerto.

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

Dirección IP del host remoto.

port
Int32

Número de puerto del host remoto.

Excepciones

address es null.

El número de puerto no es válido.

Error al intentar acceder al socket.

El Socket se ha cerrado.

Este método es válido para sockets de las familias InterNetwork o InterNetworkV6.

La longitud de address es cero.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32).

Ejemplos

El ejemplo de código siguiente se conecta a un punto de conexión remoto y, a continuación, comprueba la conexión.

// 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");
}

Comentarios

Si usa un protocolo orientado a la conexión como TCP, el Connect método establece de forma sincrónica una conexión de red entre LocalEndPoint y el punto de conexión remoto especificado. Si usa un protocolo sin conexión, Connect establece un host remoto predeterminado. Después de llamar Connect a , puede enviar datos al dispositivo remoto con el Send método o recibir datos del dispositivo remoto con el Receive método .

Si usa un protocolo sin conexión como UDP, no tiene que llamar Connect a antes de enviar y recibir datos. Puede usar SendTo y ReceiveFrom para comunicarse sincrónicamente con un host remoto. Si llama a Connect cualquier datagrama que llegue desde una dirección distinta del valor predeterminado especificado se descartará. Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción SocketOptionName.Broadcastde socket en o Connect producirá una SocketExceptionexcepción . Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

Connect el método bloqueará, a menos que establezca específicamente la Blocking propiedad en false antes de llamar a Connect. Si usa un protocolo orientado a la conexión como TCP y deshabilita el bloqueo, producirá un SocketException elemento Connect porque necesita tiempo para realizar la conexión. Los protocolos sin conexión no producirán una excepción porque simplemente establecen un host remoto predeterminado. Puede usar SocketException.ErrorCode para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error. Si el error devolvió WSAEWOULDBLOCK, la conexión de host remota se ha iniciado mediante una conexión orientada Socketa la conexión, pero aún no se ha completado correctamente. Use el Poll método para determinar cuándo finaliza la Socket conexión.

Nota

Si usa un protocolo orientado a la conexión y no llamó Bind a antes de llamar a Connect, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto. Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección de red local y un número de puerto hasta que complete una operación de envío o recepción. Si desea cambiar el host remoto predeterminado, llame Connect de nuevo con el punto de conexión deseado.

Nota

Si el socket se ha desconectado anteriormente, no puede usar este método para restaurar la conexión. Use uno de los métodos asincrónicos BeginConnect para volver a conectarse. Se trata de una limitación del proveedor subyacente.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Se aplica a

Connect(IPAddress[], Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Establece una conexión a un host remoto. El host se especifica mediante una matriz de direcciones IP y un número de puerto.

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[]

Direcciones IP del host remoto.

port
Int32

Número de puerto del host remoto.

Excepciones

addresses es null.

El número de puerto no es válido.

Error al intentar acceder al socket.

El Socket se ha cerrado.

El socket no está en las InterNetwork familias o InterNetworkV6 .

La longitud de address es cero.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32).

Ejemplos

El ejemplo de código siguiente se conecta a un punto de conexión remoto y, a continuación, comprueba la conexión.

// 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");
}

Comentarios

Este método se usa normalmente inmediatamente después de una llamada a GetHostAddresses, que puede devolver varias direcciones IP para un único host. Si usa un protocolo orientado a la conexión como TCP, el Connect método establece de forma sincrónica una conexión de red entre LocalEndPoint y el punto de conexión remoto especificado. Si usa un protocolo sin conexión, Connect establece un host remoto predeterminado. Después de llamar Connect a , puede enviar datos al dispositivo remoto con el Send método o recibir datos del dispositivo remoto con el Receive método .

Si usa un protocolo sin conexión como UDP, no tiene que llamar Connect a antes de enviar y recibir datos. Puede usar SendTo y ReceiveFrom para comunicarse sincrónicamente con un host remoto. Si llama a Connect cualquier datagrama que llegue desde una dirección distinta del valor predeterminado especificado se descartará. Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción SocketOptionName.Broadcastde socket en o Connect producirá una SocketExceptionexcepción . Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

Connect el método bloqueará, a menos que establezca específicamente la Blocking propiedad en false antes de llamar a Connect. Si usa un protocolo orientado a la conexión como TCP y deshabilita el bloqueo, producirá un SocketException elemento Connect porque necesita tiempo para realizar la conexión. Los protocolos sin conexión no producirán una excepción porque simplemente establecen un host remoto predeterminado. Puede usar SocketException.ErrorCode para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error. Si el error devolvió WSAEWOULDBLOCK, la conexión de host remota se ha iniciado mediante una conexión orientada Socketa la conexión, pero aún no se ha completado correctamente. Use el Poll método para determinar cuándo finaliza la Socket conexión.

Nota

Si usa un protocolo orientado a la conexión y no llamó Bind a antes de llamar a Connect, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto. Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección de red local y un número de puerto hasta que complete una operación de envío o recepción. Si desea cambiar el host remoto predeterminado, llame Connect de nuevo con el punto de conexión deseado.

Nota

Si el socket se ha desconectado anteriormente, no puede usar este método para restaurar la conexión. Use uno de los métodos asincrónicos BeginConnect para volver a conectarse. Se trata de una limitación del proveedor subyacente.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Se aplica a

Connect(String, Int32)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Establece una conexión a un host remoto. El host se especifica mediante un nombre de host y un número de puerto.

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

Nombre del host remoto.

port
Int32

Número de puerto del host remoto.

Excepciones

host es null.

El número de puerto no es válido.

Error al intentar acceder al socket.

El Socket se ha cerrado.

El socket no está en las InterNetwork familias o InterNetworkV6 .

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32).

Ejemplos

El ejemplo de código siguiente se conecta a un punto de conexión remoto y, a continuación, comprueba la conexión.

// 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");
}

Comentarios

Si usa un protocolo orientado a la conexión como TCP, el Connect método establece de forma sincrónica una conexión de red entre LocalEndPoint y el host remoto especificado. Si usa un protocolo sin conexión, Connect establece un host remoto predeterminado. Después de llamar Connect a , puede enviar datos al dispositivo remoto con el Send método o recibir datos del dispositivo remoto con el Receive método .

Si usa un protocolo sin conexión como UDP, no tiene que llamar Connect a antes de enviar y recibir datos. Puede usar SendTo y ReceiveFrom para comunicarse sincrónicamente con un host remoto. Si llama a Connect cualquier datagrama que llegue desde una dirección distinta del valor predeterminado especificado se descartará. Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar al SetSocketOption método y establecer la opción SocketOptionName.Broadcastde socket en o Connect producirá una SocketExceptionexcepción . Si recibe un SocketException, use la SocketException.ErrorCode propiedad para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.

El Connect método se bloqueará, a menos que establezca específicamente la Blocking propiedad en false antes de llamar Connecta . Si usa un protocolo orientado a la conexión como TCP y deshabilita el bloqueo, producirá un SocketException elemento Connect porque necesita tiempo para realizar la conexión. Los protocolos sin conexión no producirán una excepción porque simplemente establecen un host remoto predeterminado. Puede usar SocketException.ErrorCode para obtener el código de error específico. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error. Si el error devolvió WSAEWOULDBLOCK, la conexión de host remota se ha iniciado mediante una conexión orientada Socketa la conexión, pero aún no se ha completado correctamente. Use el Poll método para determinar cuándo finaliza la Socket conexión.

Si IPv6 está habilitado y Connect(String, Int32) se llama al método para conectarse a un host que se resuelve en direcciones IPv6 e IPv4, la conexión a la dirección IPv6 se intentará primero antes de la dirección IPv4. Esto puede tener el efecto de retrasar el tiempo para establecer la conexión si el host no escucha en la dirección IPv6.

Nota

Si usa un protocolo orientado a la conexión y no Bind llamó a antes de llamar a Connect, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto. Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección de red local y un número de puerto hasta que complete una operación de envío o recepción. Si desea cambiar el host remoto predeterminado, llame Connect de nuevo con el punto de conexión deseado.

Nota

Si el socket se ha desconectado anteriormente, no puede usar este método para restaurar la conexión. Use uno de los métodos asincrónicos BeginConnect para volver a conectarse. Se trata de una limitación del proveedor subyacente.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Se aplica a