Socket.Connect Méthode

Définition

Établit une connexion à un hôte distant.

Surcharges

Connect(EndPoint)

Établit une connexion à un hôte distant.

Connect(IPAddress, Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par une adresse IP et un numéro de port.

Connect(IPAddress[], Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par un tableau d’adresses IP et un numéro de port.

Connect(String, Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par un nom d’hôte et un numéro de port.

Connect(EndPoint)

Établit une connexion à un hôte distant.

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)

Paramètres

remoteEP
EndPoint

EndPoint qui représente l’appareil distant.

Exceptions

remoteEP a la valeur null.

Une erreur s’est produite pendant la tentative d’accès au socket.

Un appelant situé plus haut dans la pile des appels n’a pas l’autorisation pour l’opération demandée.

Socket a été mis dans un état d’écoute en appelant Listen(Int32).

Exemples

L’exemple de code suivant se connecte à un point de terminaison distant, puis vérifie la connexion.

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

Remarques

Si vous utilisez un protocole orienté connexion tel que TCP, la Connect méthode établit de façon synchrone une connexion réseau entre LocalEndPoint et le point de terminaison distant spécifié. Si vous utilisez un protocole sans connexion, Connect établit un hôte distant par défaut. Après avoir appelé Connect, vous pouvez envoyer des données à l’appareil distant avec la Send méthode ou recevoir des données de l’appareil distant avec la Receive méthode.

Si vous utilisez un protocole sans connexion tel que UDP, vous n’avez pas besoin d’appeler Connect avant d’envoyer et de recevoir des données. Vous pouvez utiliser SendTo et ReceiveFrom communiquer de manière synchrone avec un hôte distant. Si vous appelez Connect, tous les datagrammes qui arrivent d’une adresse autre que la valeur par défaut spécifiée seront ignorés. Si vous souhaitez définir votre hôte distant par défaut sur une adresse de diffusion, vous devez d’abord appeler la SetSocketOption méthode et définir l’option SocketOptionName.Broadcastde socket sur , ou Connect lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

La Connect méthode se bloque, sauf si vous définissez spécifiquement la Blocking propriété false sur avant d’appeler Connect. Si vous utilisez un protocole orienté connexion comme TCP et que vous désactivez le blocage, Connect lève une exception SocketException , car il a besoin de temps pour établir la connexion. Les protocoles sans connexion ne lèvent pas d’exception, car ils établissent simplement un hôte distant par défaut. Vous pouvez utiliser SocketException.ErrorCode pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur. Si l’erreur a retourné WSAEWOULDBLOCK, la connexion de l’hôte distant a été lancée par une connexion orientée Socketconnexion, mais elle n’a pas encore abouti. Utilisez la Poll méthode pour déterminer quand la Socket connexion est terminée.

Notes

Si vous utilisez un protocole orienté connexion et que vous n’avez pas appelé avant d’appeler Bind Connect, le fournisseur de services sous-jacent affecte l’adresse réseau locale et le numéro de port. Si vous utilisez un protocole sans connexion, le fournisseur de services n’affecte pas d’adresse réseau locale et de numéro de port tant que vous n’avez pas terminé une opération d’envoi ou de réception. Si vous souhaitez modifier l’hôte distant par défaut, appelez Connect à nouveau avec le point de terminaison souhaité.

Notes

Si le socket a été précédemment déconnecté, vous ne pouvez pas utiliser cette méthode pour restaurer la connexion. Utilisez l’une des méthodes asynchrones BeginConnect pour vous reconnecter. Il s’agit d’une limitation du fournisseur sous-jacent.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans le .NET Framework.

Voir aussi

S’applique à

Connect(IPAddress, Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par une adresse IP et un numéro de port.

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)

Paramètres

address
IPAddress

Adresse IP de l’hôte distant.

port
Int32

Numéro de port de l'hôte distant.

Exceptions

address a la valeur null.

Le numéro de port n’est pas valide.

Une erreur s’est produite pendant la tentative d’accès au socket.

Cette méthode est valide pour les sockets appartenant aux familles InterNetwork ou InterNetworkV6.

La longueur de address est égale à zéro.

Socket a été mis dans un état d’écoute en appelant Listen(Int32).

Exemples

L’exemple de code suivant se connecte à un point de terminaison distant, puis vérifie la connexion.

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

Remarques

Si vous utilisez un protocole orienté connexion tel que TCP, la Connect méthode établit de façon synchrone une connexion réseau entre LocalEndPoint et le point de terminaison distant spécifié. Si vous utilisez un protocole sans connexion, Connect établit un hôte distant par défaut. Après avoir appelé Connect , vous pouvez envoyer des données à l’appareil distant avec la Send méthode ou recevoir des données de l’appareil distant avec la Receive méthode.

Si vous utilisez un protocole sans connexion tel que UDP, vous n’avez pas besoin d’appeler Connect avant d’envoyer et de recevoir des données. Vous pouvez utiliser SendTo et ReceiveFrom communiquer de manière synchrone avec un hôte distant. Si vous appelez Connect des datagrammes qui arrivent d’une adresse autre que la valeur par défaut spécifiée est ignorée. Si vous souhaitez définir votre hôte distant par défaut sur une adresse de diffusion, vous devez d’abord appeler la SetSocketOption méthode et définir l’option SocketOptionName.Broadcastde socket sur , ou Connect lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Connect la méthode bloquera, sauf si vous définissez spécifiquement la Blocking propriété false sur avant d’appeler Connect. Si vous utilisez un protocole orienté connexion comme TCP et que vous désactivez le blocage, Connect lève une exception SocketException , car il a besoin de temps pour établir la connexion. Les protocoles sans connexion ne lèvent pas d’exception, car ils établissent simplement un hôte distant par défaut. Vous pouvez utiliser SocketException.ErrorCode pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur. Si l’erreur a retourné WSAEWOULDBLOCK, la connexion de l’hôte distant a été lancée par une connexion orientée Socketconnexion, mais elle n’a pas encore abouti. Utilisez la Poll méthode pour déterminer quand la Socket connexion est terminée.

Notes

Si vous utilisez un protocole orienté connexion et que vous n’avez pas appelé avant d’appeler Bind Connect, le fournisseur de services sous-jacent affecte l’adresse réseau locale et le numéro de port. Si vous utilisez un protocole sans connexion, le fournisseur de services n’affecte pas d’adresse réseau locale et de numéro de port tant que vous n’avez pas terminé une opération d’envoi ou de réception. Si vous souhaitez modifier l’hôte distant par défaut, appelez Connect à nouveau avec le point de terminaison souhaité.

Notes

Si le socket a été précédemment déconnecté, vous ne pouvez pas utiliser cette méthode pour restaurer la connexion. Utilisez l’une des méthodes asynchrones BeginConnect pour vous reconnecter. Il s’agit d’une limitation du fournisseur sous-jacent.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans le .NET Framework.

S’applique à

Connect(IPAddress[], Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par un tableau d’adresses IP et un numéro de port.

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)

Paramètres

addresses
IPAddress[]

Adresses IP de l’hôte distant.

port
Int32

Numéro de port de l'hôte distant.

Exceptions

addresses a la valeur null.

Le numéro de port n’est pas valide.

Une erreur s’est produite pendant la tentative d’accès au socket.

Le socket n’est pas dans la ou InterNetworkV6 les InterNetwork familles.

La longueur de address est égale à zéro.

Socket a été mis dans un état d’écoute en appelant Listen(Int32).

Exemples

L’exemple de code suivant se connecte à un point de terminaison distant, puis vérifie la connexion.

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

Remarques

Cette méthode est généralement utilisée immédiatement après un appel à GetHostAddresses, qui peut retourner plusieurs adresses IP pour un seul hôte. Si vous utilisez un protocole orienté connexion tel que TCP, la Connect méthode établit de façon synchrone une connexion réseau entre LocalEndPoint et le point de terminaison distant spécifié. Si vous utilisez un protocole sans connexion, Connect établit un hôte distant par défaut. Après avoir appelé Connect , vous pouvez envoyer des données à l’appareil distant avec la Send méthode ou recevoir des données de l’appareil distant avec la Receive méthode.

Si vous utilisez un protocole sans connexion tel que UDP, vous n’avez pas besoin d’appeler Connect avant d’envoyer et de recevoir des données. Vous pouvez utiliser SendTo et ReceiveFrom communiquer de manière synchrone avec un hôte distant. Si vous appelez Connect des datagrammes qui arrivent d’une adresse autre que la valeur par défaut spécifiée est ignorée. Si vous souhaitez définir votre hôte distant par défaut sur une adresse de diffusion, vous devez d’abord appeler la SetSocketOption méthode et définir l’option SocketOptionName.Broadcastde socket sur , ou Connect lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

Connect la méthode bloquera, sauf si vous définissez spécifiquement la Blocking propriété false sur avant d’appeler Connect. Si vous utilisez un protocole orienté connexion comme TCP et que vous désactivez le blocage, Connect lève une exception SocketException , car il a besoin de temps pour établir la connexion. Les protocoles sans connexion ne lèvent pas d’exception, car ils établissent simplement un hôte distant par défaut. Vous pouvez utiliser SocketException.ErrorCode pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur. Si l’erreur a retourné WSAEWOULDBLOCK, la connexion de l’hôte distant a été lancée par une connexion orientée Socketconnexion, mais elle n’a pas encore abouti. Utilisez la Poll méthode pour déterminer quand la Socket connexion est terminée.

Notes

Si vous utilisez un protocole orienté connexion et que vous n’avez pas appelé avant d’appeler Bind Connect, le fournisseur de services sous-jacent affecte l’adresse réseau locale et le numéro de port. Si vous utilisez un protocole sans connexion, le fournisseur de services n’affecte pas d’adresse réseau locale et de numéro de port tant que vous n’avez pas terminé une opération d’envoi ou de réception. Si vous souhaitez modifier l’hôte distant par défaut, appelez Connect à nouveau avec le point de terminaison souhaité.

Notes

Si le socket a été précédemment déconnecté, vous ne pouvez pas utiliser cette méthode pour restaurer la connexion. Utilisez l’une des méthodes asynchrones BeginConnect pour vous reconnecter. Il s’agit d’une limitation du fournisseur sous-jacent.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans le .NET Framework.

S’applique à

Connect(String, Int32)

Établit une connexion à un hôte distant. L’hôte est spécifié par un nom d’hôte et un numéro de port.

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)

Paramètres

host
String

Nom de l'hôte distant.

port
Int32

Numéro de port de l'hôte distant.

Exceptions

host a la valeur null.

Le numéro de port n’est pas valide.

Une erreur s’est produite pendant la tentative d’accès au socket.

Le socket n’est pas dans la ou InterNetworkV6 les InterNetwork familles.

Socket a été mis dans un état d’écoute en appelant Listen(Int32).

Exemples

L’exemple de code suivant se connecte à un point de terminaison distant, puis vérifie la connexion.

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

Remarques

Si vous utilisez un protocole orienté connexion tel que TCP, la Connect méthode établit de façon synchrone une connexion réseau entre LocalEndPoint et l’hôte distant spécifié. Si vous utilisez un protocole sans connexion, Connect établit un hôte distant par défaut. Après avoir appelé Connect , vous pouvez envoyer des données à l’appareil distant avec la Send méthode ou recevoir des données de l’appareil distant avec la Receive méthode.

Si vous utilisez un protocole sans connexion tel que UDP, vous n’avez pas besoin d’appeler Connect avant d’envoyer et de recevoir des données. Vous pouvez utiliser SendTo et ReceiveFrom communiquer de manière synchrone avec un hôte distant. Si vous appelez Connect des datagrammes qui arrivent d’une adresse autre que la valeur par défaut spécifiée est ignorée. Si vous souhaitez définir votre hôte distant par défaut sur une adresse de diffusion, vous devez d’abord appeler la SetSocketOption méthode et définir l’option SocketOptionName.Broadcastde socket sur , ou Connect lève un SocketException. Si vous recevez un SocketException, utilisez la SocketException.ErrorCode propriété pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.

La Connect méthode se bloque, sauf si vous définissez spécifiquement la Blocking propriété false sur avant d’appeler Connect. Si vous utilisez un protocole orienté connexion comme TCP et que vous désactivez le blocage, Connect lève une exception SocketException , car il a besoin de temps pour établir la connexion. Les protocoles sans connexion ne lèvent pas d’exception, car ils établissent simplement un hôte distant par défaut. Vous pouvez utiliser SocketException.ErrorCode pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, reportez-vous à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur. Si l’erreur a retourné WSAEWOULDBLOCK, la connexion de l’hôte distant a été lancée par une connexion orientée Socketconnexion, mais elle n’a pas encore abouti. Utilisez la Poll méthode pour déterminer quand la Socket connexion est terminée.

Si IPv6 est activé et que la Connect(String, Int32) méthode est appelée pour se connecter à un hôte qui se résout à la fois en adresses IPv6 et IPv4, la connexion à l’adresse IPv6 est tentée en premier avant l’adresse IPv4. Cela peut avoir pour effet de retarder le délai d’établissement de la connexion si l’hôte n’écoute pas sur l’adresse IPv6.

Notes

Si vous utilisez un protocole orienté connexion et que vous n’avez pas appelé Bind avant d’appeler Connect, le fournisseur de services sous-jacent affecte l’adresse réseau locale et le numéro de port. Si vous utilisez un protocole sans connexion, le fournisseur de services n’affecte pas d’adresse réseau locale et de numéro de port tant que vous n’avez pas terminé une opération d’envoi ou de réception. Si vous souhaitez modifier l’hôte distant par défaut, appelez Connect à nouveau avec le point de terminaison souhaité.

Notes

Si le socket a été précédemment déconnecté, vous ne pouvez pas utiliser cette méthode pour restaurer la connexion. Utilisez l’une des méthodes asynchrones BeginConnect pour vous reconnecter. Il s’agit d’une limitation du fournisseur sous-jacent.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans le .NET Framework.

S’applique à