Socket.ConnectAsync Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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
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.
De Socket is gesloten.
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.
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.
De Socket is gesloten.
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.