Socket.ConnectAsync Methode

Definition

Startet eine asynchrone Anforderung für eine Verbindung mit einem Remotehost.

Überlädt

Name Beschreibung
ConnectAsync(SocketAsyncEventArgs)

Startet eine asynchrone Anforderung für eine Verbindung mit einem Remotehost.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Startet eine asynchrone Anforderung für eine Verbindung mit einem Remotehost.

ConnectAsync(SocketAsyncEventArgs)

Startet eine asynchrone Anforderung für eine Verbindung mit einem Remotehost.

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

Parameter

e
SocketAsyncEventArgs

Das SocketAsyncEventArgs Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.

Gibt zurück

true wenn der E/A-Vorgang aussteht. Das Completed Ereignis für den e Parameter wird nach Abschluss des Vorgangs ausgelöst.

false wenn der E/A-Vorgang synchron abgeschlossen wurde. In diesem Fall wird das Completed Ereignis für den e Parameter nicht ausgelöst, und das e als Parameter übergebene Objekt kann sofort untersucht werden, nachdem der Methodenaufruf zurückgegeben wird, um das Ergebnis des Vorgangs abzurufen.

Ausnahmen

Ein Argument ist ungültig. Diese Ausnahme tritt auf, wenn mehrere Puffer angegeben werden, die BufferList Eigenschaft ist nicht NULL.

Der e Parameter darf nicht null sein und darf RemoteEndPoint nicht null sein.

Die Socket Überwachung erfolgt, oder ein Socketvorgang wurde bereits ausgeführt, indem das SocketAsyncEventArgs im Parameter angegebene Objekt verwendet wurde e .

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Der lokale Endpunkt und die RemoteEndPoint sind nicht die gleiche Adressfamilie.

Das Socket wurde geschlossen.

Ein aufrufer höher im Aufrufstapel verfügt nicht über die Berechtigung für den angeforderten Vorgang.

Hinweise

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, startet die ConnectAsync Methode eine asynchrone Anforderung für eine Verbindung mit dem Remotehost. Wenn Sie ein verbindungsloses Protokoll verwenden, ConnectAsync wird ein Standard-Remotehost eingerichtet.

Um über den Abschluss benachrichtigt zu werden, müssen Sie eine Rückrufmethode erstellen, die den EventHandler<SocketAsyncEventArgs-Delegaten> implementiert, und den Rückruf an das SocketAsyncEventArgs.Completed Ereignis anfügen.

Der Aufrufer muss die SocketAsyncEventArgs.RemoteEndPoint Eigenschaft auf den IPEndPoint Remotehost festlegen, mit dem eine Verbindung hergestellt werden soll.

Der Aufrufer kann die SocketAsyncEventArgs.UserToken Eigenschaft auf ein beliebiges Benutzerstatusobjekt festlegen, das vor dem Aufrufen der ConnectAsync Methode gewünscht wird, sodass die Informationen in der Rückrufmethode abgerufen werden können. Wenn der Rückruf mehr Informationen als ein einzelnes Objekt benötigt, kann eine kleine Klasse erstellt werden, um die anderen erforderlichen Statusinformationen als Member zu speichern.

Wenn Sie ein verbindungsloses Protokoll wie UDP verwenden, müssen Sie vor dem Senden und Empfangen von Daten nicht aufrufen ConnectAsync . Sie können mit SendToAsync einem Remotehost kommunizieren und ReceiveFromAsync damit kommunizieren. Wenn Sie aufrufen ConnectAsync, werden alle Datagramme, die von einer anderen Adresse als der angegebenen Standard stammen, verworfen. Wenn Sie den Standard-Remotehost ändern möchten, rufen Sie die ConnectAsync Methode erneut mit dem gewünschten Endpunkt auf.

Wenn Sie den Standard-Remotehost auf eine Übertragungsadresse festlegen möchten, müssen Sie zuerst anrufen SetSocketOption und "Broadcast" truefestlegen. Wenn dies nicht geschehen ist, löst die ConnectAsync Methode eine SocketException.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich:

Optional kann ein Puffer bereitgestellt werden, der atomisch an den Socket gesendet wird, nachdem die ConnectAsync Methode erfolgreich ausgeführt wurde. In diesem Fall muss die SocketAsyncEventArgs.Buffer Eigenschaft auf den Puffer festgelegt werden, der die zu sendenden Daten enthält, und die SocketAsyncEventArgs.Count Eigenschaft muss auf die Anzahl der Bytes festgelegt werden, die vom Puffer gesendet werden sollen. Sobald eine Verbindung hergestellt wurde, wird dieser Datenpuffer gesendet.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden und vor dem Aufrufen Bindnicht aufrufenConnectAsync, weist der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zu.

Wenn Sie ein verbindungsloses Protokoll verwenden, weist der Dienstanbieter erst dann eine LOKALE NETZWERK-IP-Adresse und portnummer zu, wenn Sie die SendAsync Methoden aufrufen ReceiveAsync .

Die ConnectAsync Methode löst aus NotSupportedException , wenn die Adressfamilie der Socket und die nicht SocketAsyncEventArgs.RemoteEndPoint die gleiche Adressfamilie sind.

Note

Wenn Sie eine SocketException beim Aufrufen dieser Methode erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Weitere Informationen

Gilt für:

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Startet eine asynchrone Anforderung für eine Verbindung mit einem Remotehost.

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

Parameter

socketType
SocketType

Einer der SocketType Werte.

protocolType
ProtocolType

Einer der ProtocolType Werte.

e
SocketAsyncEventArgs

Das SocketAsyncEventArgs Objekt, das für diesen asynchronen Socketvorgang verwendet werden soll.

Gibt zurück

true wenn der E/A-Vorgang aussteht. Das Completed Ereignis für den e Parameter wird nach Abschluss des Vorgangs ausgelöst.

false wenn der E/A-Vorgang synchron abgeschlossen wurde. In diesem Fall wird das Completed Ereignis für den e Parameter nicht ausgelöst, und das e als Parameter übergebene Objekt kann sofort untersucht werden, nachdem der Methodenaufruf zurückgegeben wird, um das Ergebnis des Vorgangs abzurufen.

Ausnahmen

Ein Argument ist ungültig. Diese Ausnahme tritt auf, wenn mehrere Puffer angegeben werden, die BufferList Eigenschaft ist nicht NULL.

Der e Parameter darf nicht null sein und darf RemoteEndPoint nicht null sein.

Die Socket Überwachung erfolgt, oder ein Socketvorgang wurde bereits ausgeführt, indem das SocketAsyncEventArgs im Parameter angegebene Objekt verwendet wurde e .

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Der lokale Endpunkt und die RemoteEndPoint sind nicht die gleiche Adressfamilie.

Das Socket wurde geschlossen.

Ein aufrufer höher im Aufrufstapel verfügt nicht über die Berechtigung für den angeforderten Vorgang.

Hinweise

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, startet die M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs)-Methode eine asynchrone Anforderung für eine Verbindung mit dem Remotehost. Wenn Sie ein verbindungsloses Protokoll verwenden, wird ein standardmäßiger Remotehost eingerichtet, ConnectAsync der durch die socketType Parameter angegeben ist protocolType .

Um über den Abschluss benachrichtigt zu werden, müssen Sie eine Rückrufmethode erstellen, die den EventHandler<SocketAsyncEventArgs-Delegaten> implementiert, und den Rückruf an das SocketAsyncEventArgs.Completed Ereignis anfügen.

Der Aufrufer muss die SocketAsyncEventArgs.RemoteEndPoint Eigenschaft auf den IPEndPoint Remotehost festlegen, mit dem eine Verbindung hergestellt werden soll.

Der Aufrufer kann die SocketAsyncEventArgs.UserToken Eigenschaft auf ein beliebiges Benutzerstatusobjekt festlegen, das vor dem Aufrufen der ConnectAsync Methode gewünscht wird, sodass die Informationen in der Rückrufmethode abgerufen werden können. Wenn der Rückruf mehr Informationen als ein einzelnes Objekt benötigt, kann eine kleine Klasse erstellt werden, um die anderen erforderlichen Statusinformationen als Member zu speichern.

Wenn Sie ein verbindungsloses Protokoll wie UDP verwenden, müssen Sie vor dem Senden und Empfangen von Daten nicht aufrufen ConnectAsync . Sie können mit SendToAsync einem Remotehost kommunizieren und ReceiveFromAsync damit kommunizieren. Wenn Sie aufrufen ConnectAsync, werden alle Datagramme, die von einer anderen Adresse als der angegebenen Standard stammen, verworfen. Wenn Sie den Standard-Remotehost ändern möchten, rufen Sie die ConnectAsync Methode erneut mit dem gewünschten Endpunkt auf.

Wenn Sie den Standard-Remotehost auf eine Übertragungsadresse festlegen möchten, müssen Sie zuerst anrufen SetSocketOption und "Broadcast" truefestlegen. Wenn dies nicht geschehen ist, löst die ConnectAsync Methode eine SocketException.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich:

Optional kann ein Puffer bereitgestellt werden, der atomisch an den Socket gesendet wird, nachdem die ConnectAsync Methode erfolgreich ausgeführt wurde. In diesem Fall muss die SocketAsyncEventArgs.Buffer Eigenschaft auf den Puffer festgelegt werden, der die zu sendenden Daten enthält, und die SocketAsyncEventArgs.Count Eigenschaft muss auf die Anzahl der Bytes festgelegt werden, die vom Puffer gesendet werden sollen. Sobald eine Verbindung hergestellt wurde, wird dieser Datenpuffer gesendet.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden und vor dem Aufrufen Bindnicht aufrufenConnectAsync, weist der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zu.

Wenn Sie ein verbindungsloses Protokoll verwenden, weist der Dienstanbieter erst dann eine LOKALE NETZWERK-IP-Adresse und portnummer zu, wenn Sie die SendAsync Methoden aufrufen ReceiveAsync .

Die ConnectAsync Methode löst aus NotSupportedException , wenn die Adressfamilie der Socket und die nicht SocketAsyncEventArgs.RemoteEndPoint die gleiche Adressfamilie sind.

Note

Wenn Sie eine SocketException beim Aufrufen dieser Methode erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.

Gilt für: