Socket.Connect Método
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Establece una conexión a un host remoto.
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. |
- 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
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
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- LocalEndPoint
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- Blocking
- Poll(Int32, SelectMode)
Se aplica a
.NET 9 y otras versiones
Producto | Versiones |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
- 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
.NET 9 y otras versiones
Producto | Versiones |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
- 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
.NET 9 y otras versiones
Producto | Versiones |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
- 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
.NET 9 y otras versiones
Producto | Versiones |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: