Socket.ConnectAsync Methode

Definitie

Begint een asynchrone aanvraag voor een verbinding met een externe host.

Overloads

Name Description
ConnectAsync(SocketAsyncEventArgs)

Begint een asynchrone aanvraag voor een verbinding met een externe host.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Begint een asynchrone aanvraag voor een verbinding met een externe host.

ConnectAsync(SocketAsyncEventArgs)

Begint een asynchrone aanvraag voor een verbinding met een externe host.

public:
 bool ConnectAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ConnectAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ConnectAsync (e As SocketAsyncEventArgs) As Boolean

Parameters

e
SocketAsyncEventArgs

Het SocketAsyncEventArgs object dat moet worden gebruikt voor deze asynchrone socketbewerking.

Retouren

true als de I/O-bewerking in behandeling is. De Completed gebeurtenis voor de e parameter wordt gegenereerd na voltooiing van de bewerking.

false als de I/O-bewerking synchroon is voltooid. In dit geval wordt de Completed gebeurtenis voor de e parameter niet gegenereerd en kan het e object dat als parameter wordt doorgegeven, direct worden onderzocht nadat de methodeaanroep terugkeert om het resultaat van de bewerking op te halen.

Uitzonderingen

Een argument is ongeldig. Deze uitzondering treedt op als er meerdere buffers zijn opgegeven, de BufferList eigenschap niet null is.

De e parameter kan niet null zijn en de RemoteEndPoint parameter kan niet null zijn.

Er Socket wordt geluisterd of er is al een socketbewerking uitgevoerd met behulp van het SocketAsyncEventArgs object dat is opgegeven in de e parameter.

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

Het lokale eindpunt en het RemoteEndPoint zijn niet dezelfde adresfamilie.

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

Opmerkingen

Als u een verbindingsgeoriënteerd protocol gebruikt, start de ConnectAsync methode een asynchrone aanvraag voor een verbinding met de externe host. Als u een protocol zonder verbinding gebruikt, ConnectAsync maakt u een standaard externe host.

Als u op de hoogte wilt worden gesteld van voltooiing, moet u een callback-methode maken waarmee de gemachtigde EventHandler<SocketAsyncEventArgs> wordt geïmplementeerd en de callback aan de SocketAsyncEventArgs.Completed gebeurtenis wordt gekoppeld.

De beller moet de SocketAsyncEventArgs.RemoteEndPoint eigenschap instellen op de IPEndPoint externe host om verbinding mee te maken.

De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de ConnectAsync methode wordt aangeroepen, zodat de gegevens kunnen worden opgehaald in de callback-methode. Als de callback meer informatie nodig heeft dan één object, kan er een kleine klasse worden gemaakt om de andere vereiste statusgegevens als leden te bewaren.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen ConnectAsync voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendToAsync en ReceiveFromAsync communiceren met een externe host. Als u aanroept ConnectAsync, worden gegevensgrammen die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, verwijderd. Als u de standaard externe host wilt wijzigen, roept u de ConnectAsync methode opnieuw aan met het gewenste eindpunt.

Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst bellen SetSocketOption en Broadcast instellen op true. Als dit niet gebeurt, zal de ConnectAsync methode een SocketException.

De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist:

Eventueel kan er een buffer worden opgegeven die atomisch op de socket wordt verzonden nadat de ConnectAsync methode is geslaagd. In dit geval moet de SocketAsyncEventArgs.Buffer eigenschap worden ingesteld op de buffer met de gegevens die moeten worden verzonden en moet de SocketAsyncEventArgs.Count eigenschap worden ingesteld op het aantal bytes aan gegevens dat vanuit de buffer moet worden verzonden. Zodra er een verbinding tot stand is gebracht, wordt deze buffer met gegevens verzonden.

Als u een verbindingsgeoriënteerd protocol gebruikt en niet belt voordat u aanroept BindConnectAsync, wijst de onderliggende serviceprovider het meest geschikte lokale netwerkadres en poortnummer toe.

Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen IP-adres en poortnummer van het lokale netwerk toe totdat u de SendAsync of ReceiveAsync methoden aanroept.

De ConnectAsync methode genereert NotSupportedException als de adresfamilie van de Socket en de SocketAsyncEventArgs.RemoteEndPoint niet dezelfde adresfamilie zijn.

Note

Als u een SocketException bij het aanroepen van deze methode ontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode op te halen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

Zie ook

Van toepassing op

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Begint een asynchrone aanvraag voor een verbinding met een externe host.

public:
 static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean

Parameters

socketType
SocketType

Een van de SocketType waarden.

protocolType
ProtocolType

Een van de ProtocolType waarden.

e
SocketAsyncEventArgs

Het SocketAsyncEventArgs object dat moet worden gebruikt voor deze asynchrone socketbewerking.

Retouren

true als de I/O-bewerking in behandeling is. De Completed gebeurtenis voor de e parameter wordt gegenereerd na voltooiing van de bewerking.

false als de I/O-bewerking synchroon is voltooid. In dit geval wordt de Completed gebeurtenis voor de e parameter niet gegenereerd en kan het e object dat als parameter wordt doorgegeven, direct worden onderzocht nadat de methodeaanroep terugkeert om het resultaat van de bewerking op te halen.

Uitzonderingen

Een argument is ongeldig. Deze uitzondering treedt op als er meerdere buffers zijn opgegeven, de BufferList eigenschap niet null is.

De e parameter kan niet null zijn en de RemoteEndPoint parameter kan niet null zijn.

Er Socket wordt geluisterd of er is al een socketbewerking uitgevoerd met behulp van het SocketAsyncEventArgs object dat is opgegeven in de e parameter.

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

Het lokale eindpunt en het RemoteEndPoint zijn niet dezelfde adresfamilie.

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

Opmerkingen

Als u een verbindingsgeoriënteerd protocol gebruikt, start de methode M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketS.SocketAsyncEventArgs) een asynchrone aanvraag voor een verbinding met de externe host. Als u een verbindingsloos protocol gebruikt, ConnectAsync maakt u een standaard externe host op die is opgegeven door de socketType en protocolType parameters.

Als u op de hoogte wilt worden gesteld van voltooiing, moet u een callback-methode maken waarmee de gemachtigde EventHandler<SocketAsyncEventArgs> wordt geïmplementeerd en de callback aan de SocketAsyncEventArgs.Completed gebeurtenis wordt gekoppeld.

De beller moet de SocketAsyncEventArgs.RemoteEndPoint eigenschap instellen op de IPEndPoint externe host om verbinding mee te maken.

De aanroeper kan de SocketAsyncEventArgs.UserToken eigenschap instellen op een gewenst gebruikersstatusobject voordat de ConnectAsync methode wordt aangeroepen, zodat de gegevens kunnen worden opgehaald in de callback-methode. Als de callback meer informatie nodig heeft dan één object, kan er een kleine klasse worden gemaakt om de andere vereiste statusgegevens als leden te bewaren.

Als u een verbindingsloos protocol zoals UDP gebruikt, hoeft u niet aan te roepen ConnectAsync voordat u gegevens verzendt en ontvangt. U kunt deze gebruiken SendToAsync en ReceiveFromAsync communiceren met een externe host. Als u aanroept ConnectAsync, worden gegevensgrammen die afkomstig zijn van een ander adres dan de opgegeven standaardwaarde, verwijderd. Als u de standaard externe host wilt wijzigen, roept u de ConnectAsync methode opnieuw aan met het gewenste eindpunt.

Als u de standaard externe host wilt instellen op een broadcast-adres, moet u eerst bellen SetSocketOption en Broadcast instellen op true. Als dit niet gebeurt, zal de ConnectAsync methode een SocketException.

De volgende eigenschappen en gebeurtenissen op het System.Net.Sockets.SocketAsyncEventArgs object zijn vereist:

Eventueel kan er een buffer worden opgegeven die atomisch op de socket wordt verzonden nadat de ConnectAsync methode is geslaagd. In dit geval moet de SocketAsyncEventArgs.Buffer eigenschap worden ingesteld op de buffer met de gegevens die moeten worden verzonden en moet de SocketAsyncEventArgs.Count eigenschap worden ingesteld op het aantal bytes aan gegevens dat vanuit de buffer moet worden verzonden. Zodra er een verbinding tot stand is gebracht, wordt deze buffer met gegevens verzonden.

Als u een verbindingsgeoriënteerd protocol gebruikt en niet belt voordat u aanroept BindConnectAsync, wijst de onderliggende serviceprovider het meest geschikte lokale netwerkadres en poortnummer toe.

Als u een verbindingsloos protocol gebruikt, wijst de serviceprovider geen IP-adres en poortnummer van het lokale netwerk toe totdat u de SendAsync of ReceiveAsync methoden aanroept.

De ConnectAsync methode genereert NotSupportedException als de adresfamilie van de Socket en de SocketAsyncEventArgs.RemoteEndPoint niet dezelfde adresfamilie zijn.

Note

Als u een SocketException bij het aanroepen van deze methode ontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode op te halen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.

Van toepassing op