Socket.Connect Methode

Definitie

Hiermee wordt een verbinding tot stand gebracht met een externe host.

Overloads

Name Description
Connect(String, Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een hostnaam en een poortnummer.

Connect(IPAddress[], Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een matrix met IP-adressen en een poortnummer.

Connect(IPAddress, Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een IP-adres en een poortnummer.

Connect(EndPoint)

Hiermee wordt een verbinding tot stand gebracht met een externe host.

Connect(String, Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een hostnaam en een poortnummer.

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)

Parameters

host
String

De naam van de externe host.

port
Int32

Het poortnummer van de externe host.

Uitzonderingen

host is null.

Het poortnummer is ongeldig.

Er is een fout opgetreden bij het openen van de socket.

Het stopcontact bevindt zich niet in de InterNetwork of InterNetworkV6 families.

De Socket is in een luisterstatus geplaatst door te bellen Listen(Int32).

Voorbeelden

Het volgende codevoorbeeld maakt verbinding met een extern eindpunt en controleert vervolgens de verbinding.

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

Opmerkingen

Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt, brengt de Connect methode synchroon een netwerkverbinding tot stand tussen LocalEndPoint en de opgegeven externe host. Als u een protocol zonder verbinding gebruikt, Connect maakt u een standaard externe host. Nadat u hebt aangeroepen Connect , kunt u met de Send methode gegevens verzenden naar het externe apparaat of gegevens ontvangen van het externe apparaat met de Receive methode.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen Connect voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendTo en ReceiveFrom synchroon communiceren met een externe host. Als u wel gegevensgrammen aanroept Connect die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, worden verwijderd. Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst de SetSocketOption methode aanroepen en de socketoptie SocketOptionName.Broadcastinstellen op , of Connect een SocketException. Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

De Connect methode wordt geblokkeerd, tenzij u de Blocking eigenschap false specifiek instelt op voordat u aanroept Connect. Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt en u blokkeren uitschakelt, Connect treedt er een SocketException fout op omdat er tijd nodig is om de verbinding te maken. Verbindingsloze protocollen genereren geen uitzondering omdat ze gewoon een standaard externe host tot stand brengen. U kunt SocketException.ErrorCode de specifieke foutcode verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout. Als de fout WSAEWOULDBLOCK retourneert, is de externe hostverbinding gestart door een verbindingsgeoriënteerd Socket, maar is deze nog niet voltooid. Gebruik de Poll methode om te bepalen wanneer de Socket verbinding is voltooid.

Als IPv6 is ingeschakeld en de Connect(String, Int32) methode wordt aangeroepen om verbinding te maken met een host die wordt omgezet naar zowel IPv6- als IPv4-adressen, wordt de verbinding met het IPv6-adres eerst geprobeerd vóór het IPv4-adres. Dit kan het gevolg zijn van het vertragen van de tijd om de verbinding tot stand te brengen als de host niet luistert op het IPv6-adres.

Note

Als u een verbindingsgeoriënteerd protocol gebruikt en niet hebt aangeroepen voordat u aanroept BindConnect, wijst de onderliggende serviceprovider het lokale netwerkadres en poortnummer toe. Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen lokaal netwerkadres en poortnummer toe totdat u een verzend- of ontvangstbewerking hebt voltooid. Als u de standaard externe host wilt wijzigen, roept Connect u het gewenste eindpunt opnieuw aan.

Note

Als de verbinding met de socket eerder is verbroken, kunt u deze methode niet gebruiken om de verbinding te herstellen. Gebruik een van de asynchrone BeginConnect methoden om opnieuw verbinding te maken. Dit is een beperking van de onderliggende provider.

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Van toepassing op

Connect(IPAddress[], Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een matrix met IP-adressen en een poortnummer.

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)

Parameters

addresses
IPAddress[]

De IP-adressen van de externe host.

port
Int32

Het poortnummer van de externe host.

Uitzonderingen

addresses is null.

Het poortnummer is ongeldig.

Er is een fout opgetreden bij het openen van de socket.

Het stopcontact bevindt zich niet in de InterNetwork of InterNetworkV6 families.

De lengte is addresses nul.

De Socket is in een luisterstatus geplaatst door te bellen Listen(Int32).

Voorbeelden

Het volgende codevoorbeeld maakt verbinding met een extern eindpunt en controleert vervolgens de verbinding.

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

Opmerkingen

Deze methode wordt doorgaans onmiddellijk na een aanroep naar GetHostAddressesgebruikt, waardoor meerdere IP-adressen voor één host kunnen worden geretourneerd. Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt, brengt de Connect methode synchroon een netwerkverbinding tot stand tussen LocalEndPoint en het opgegeven externe eindpunt. Als u een protocol zonder verbinding gebruikt, Connect maakt u een standaard externe host. Nadat u hebt aangeroepen Connect , kunt u met de Send methode gegevens verzenden naar het externe apparaat of gegevens ontvangen van het externe apparaat met de Receive methode.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen Connect voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendTo en ReceiveFrom synchroon communiceren met een externe host. Als u wel gegevensgrammen aanroept Connect die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, worden verwijderd. Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst de SetSocketOption methode aanroepen en de socketoptie SocketOptionName.Broadcastinstellen op , of Connect een SocketException. Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

Connect de methode wordt geblokkeerd, tenzij u de Blocking eigenschap false specifiek instelt op voordat u aanroept Connect. Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt en u blokkering uitschakelt, Connect treedt er een SocketException fout op omdat er tijd nodig is om de verbinding te maken. Verbindingsloze protocollen genereren geen uitzondering omdat ze gewoon een standaard externe host tot stand brengen. U kunt SocketException.ErrorCode de specifieke foutcode verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout. Als de fout WSAEWOULDBLOCK retourneert, is de externe hostverbinding gestart door een verbindingsgeoriënteerd Socket, maar is deze nog niet voltooid. Gebruik de Poll methode om te bepalen wanneer de Socket verbinding is voltooid.

Note

Als u een verbindingsgeoriënteerd protocol gebruikt en niet hebt aangeroepen voordat u aanroept BindConnect, wijst de onderliggende serviceprovider het adres en het poortnummer van het lokale netwerk toe. Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen lokaal netwerkadres en poortnummer toe totdat u een verzend- of ontvangstbewerking hebt voltooid. Als u de standaard externe host wilt wijzigen, roept Connect u het gewenste eindpunt opnieuw aan.

Note

Als de verbinding met de socket eerder is verbroken, kunt u deze methode niet gebruiken om de verbinding te herstellen. Gebruik een van de asynchrone BeginConnect methoden om opnieuw verbinding te maken. Dit is een beperking van de onderliggende provider.

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Van toepassing op

Connect(IPAddress, Int32)

Hiermee wordt een verbinding tot stand gebracht met een externe host. De host wordt opgegeven door een IP-adres en een poortnummer.

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)

Parameters

address
IPAddress

Het IP-adres van de externe host.

port
Int32

Het poortnummer van de externe host.

Uitzonderingen

address is null.

Het poortnummer is ongeldig.

Er is een fout opgetreden bij het openen van de socket.

Deze methode is geldig voor sockets in de InterNetwork of InterNetworkV6 families.

De lengte is address nul.

De Socket is in een luisterstatus geplaatst door te bellen Listen(Int32).

Voorbeelden

Het volgende codevoorbeeld maakt verbinding met een extern eindpunt en controleert vervolgens de verbinding.

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

Opmerkingen

Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt, brengt de Connect methode synchroon een netwerkverbinding tot stand tussen LocalEndPoint en het opgegeven externe eindpunt. Als u een protocol zonder verbinding gebruikt, Connect maakt u een standaard externe host. Nadat u hebt aangeroepen Connect , kunt u met de Send methode gegevens verzenden naar het externe apparaat of gegevens ontvangen van het externe apparaat met de Receive methode.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen Connect voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendTo en ReceiveFrom synchroon communiceren met een externe host. Als u wel gegevensgrammen aanroept Connect die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, worden verwijderd. Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst de SetSocketOption methode aanroepen en de socketoptie SocketOptionName.Broadcastinstellen op , of Connect een SocketException. Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

Connect de methode wordt geblokkeerd, tenzij u de Blocking eigenschap false specifiek instelt op voordat u aanroept Connect. Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt en u blokkering uitschakelt, Connect treedt er een SocketException fout op omdat er tijd nodig is om de verbinding te maken. Verbindingsloze protocollen genereren geen uitzondering omdat ze gewoon een standaard externe host tot stand brengen. U kunt SocketException.ErrorCode de specifieke foutcode verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout. Als de fout WSAEWOULDBLOCK retourneert, is de externe hostverbinding gestart door een verbindingsgeoriënteerd Socket, maar is deze nog niet voltooid. Gebruik de Poll methode om te bepalen wanneer de Socket verbinding is voltooid.

Note

Als u een verbindingsgeoriënteerd protocol gebruikt en niet hebt aangeroepen voordat u aanroept BindConnect, wijst de onderliggende serviceprovider het adres en het poortnummer van het lokale netwerk toe. Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen lokaal netwerkadres en poortnummer toe totdat u een verzend- of ontvangstbewerking hebt voltooid. Als u de standaard externe host wilt wijzigen, roept Connect u het gewenste eindpunt opnieuw aan.

Note

Als de verbinding met de socket eerder is verbroken, kunt u deze methode niet gebruiken om de verbinding te herstellen. Gebruik een van de asynchrone BeginConnect methoden om opnieuw verbinding te maken. Dit is een beperking van de onderliggende provider.

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Van toepassing op

Connect(EndPoint)

Hiermee wordt een verbinding tot stand gebracht met een externe host.

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)

Parameters

remoteEP
EndPoint

Een EndPoint die het externe apparaat vertegenwoordigt.

Uitzonderingen

remoteEP is null.

Er is een fout opgetreden bij het openen van de socket.

Een aanroeper hoger in de aanroepstack heeft geen machtiging voor de aangevraagde bewerking.

De Socket is in een luisterstatus geplaatst door te bellen Listen(Int32).

Voorbeelden

Het volgende codevoorbeeld maakt verbinding met een extern eindpunt en controleert vervolgens de verbinding.

// .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

Opmerkingen

Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt, brengt de Connect methode synchroon een netwerkverbinding tot stand tussen LocalEndPoint en het opgegeven externe eindpunt. Als u een protocol zonder verbinding gebruikt, Connect maakt u een standaard externe host. Nadat u hebt aangeroepen Connect, kunt u gegevens verzenden naar het externe apparaat met de Send methode of gegevens ontvangen van het externe apparaat met de Receive methode.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen Connect voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendTo en ReceiveFrom synchroon communiceren met een externe host. Als u aanroept Connect, worden gegevensgrammen die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, verwijderd. Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst de SetSocketOption methode aanroepen en de socketoptie SocketOptionName.Broadcastinstellen op , of Connect een SocketException. Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

De Connect methode wordt geblokkeerd, tenzij u de Blocking eigenschap false specifiek instelt op voordat u aanroept Connect. Als u een verbindingsgeoriënteerd protocol zoals TCP gebruikt en u blokkering uitschakelt, Connect treedt er een SocketException fout op omdat er tijd nodig is om de verbinding te maken. Verbindingsloze protocollen genereren geen uitzondering omdat ze gewoon een standaard externe host tot stand brengen. U kunt SocketException.ErrorCode de specifieke foutcode verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout. Als de fout WSAEWOULDBLOCK retourneert, is de externe hostverbinding gestart door een verbindingsgeoriënteerd Socket, maar is deze nog niet voltooid. Gebruik de Poll methode om te bepalen wanneer de Socket verbinding is voltooid.

Note

Als u een verbindingsgeoriënteerd protocol gebruikt en niet hebt aangeroepen voordat u aanroept BindConnect, wijst de onderliggende serviceprovider het adres en het poortnummer van het lokale netwerk toe. Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen lokaal netwerkadres en poortnummer toe totdat u een verzend- of ontvangstbewerking hebt voltooid. Als u de standaard externe host wilt wijzigen, roept Connect u het gewenste eindpunt opnieuw aan.

Note

Als de verbinding met de socket eerder is verbroken, kunt u deze methode niet gebruiken om de verbinding te herstellen. Gebruik een van de asynchrone BeginConnect methoden om opnieuw verbinding te maken. Dit is een beperking van de onderliggende provider.

Note

Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.

Zie ook

Van toepassing op