Freigeben über


Socket.SendPacketsAsync(SocketAsyncEventArgs) Methode

Definition

Sendet eine Auflistung von Dateien oder Datenpuffern im Speicher asynchron an ein verbundenes Socket-Objekt.

public:
 bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (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 dem 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 als Parameter übergebene e-Objekt kann direkt nach der Rückgabe des Methodenaufrufs untersucht werden, um die Ergebnisse des Vorgangs abzurufen.

Ausnahmen

Die in der FilePath-Eigenschaft angegebene Datei wurde nicht gefunden.

Es wird bereits ein Socketvorgang mit dem im e-Parameter angegebenen SocketAsyncEventArgs-Objekt ausgeführt.

Der Socket ist mit keinem Remotehost verbunden.

Der Socket wurde geschlossen.

Ein verbindungsloser Socket wird verwendet, und die verwendete Datei überschreitet die maximale Paketgröße des zugrunde liegenden Transports.

Hinweise

Die SendPacketsAsync -Methode wird verwendet, um eine Sammlung von Dateien oder in Speicherdatenpuffern an den Remotehost zu senden. Muss Socket bereits mit dem Remotehost verbunden sein.

Wenn ein System.Net.Sockets.SendPacketsElement auf eine Datei im Arbeitsverzeichnis verweist, kann diese nur mit dem Namen der Datei identifiziert werden. Andernfalls müssen der vollständige Pfad und der Name der Datei angegeben werden. Wildcards und UNC-Freigabenamen werden unterstützt. Wenn die Datei nicht gefunden wird, FileNotFoundException wird ausgelöst.

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.

Die SocketAsyncEventArgs.SendPacketsFlags -Eigenschaft für den e Parameter stellt dem Window Sockets-Dienstanbieter zusätzliche Informationen zur Dateiübertragung bereit. Weitere Informationen zum Verwenden dieses Typs finden Sie unter TransmitFileOptions.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs -Objekt sind erforderlich, um diese Methode erfolgreich aufzurufen:

Der Aufrufer kann die SocketAsyncEventArgs.UserToken -Eigenschaft auf ein beliebiges Benutzerzustandsobjekt festlegen, bevor die SendPacketsAsync -Methode aufgerufen 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, die die anderen erforderlichen Zustandsinformationen als Member enthält.

Diese Methode verwendet die TransmitPackets-Funktion in der Windows Sockets 2-API. Weitere Informationen zur TransmitPackets-Funktion und ihren Flags finden Sie in der Dokumentation zu Windows Sockets .

Obwohl die Methode für verbindungsorientierte Protokolle vorgesehen ist, funktioniert sie SendPacketsAsync auch für verbindungslose Protokolle, vorausgesetzt, Sie rufen zuerst die BeginConnect-, - oder ConnectAsync -Methode auf, Connectum einen Standard-Remotehost einzurichten. Bei verbindungslosen Protokollen müssen Sie außerdem sicherstellen, dass die Größe Ihrer Datei die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendPacketsAsync löst eine Ausnahme aus SocketException .

Die SendPacketsAsync Methode wird entsprechend dem Betriebssystem optimiert, auf dem sie verwendet wird. Unter Windows Server-Editionen ist die SendPacketsAsync -Methode für hohe Leistung optimiert.

Bei Windows-Clienteditionen ist die SendPacketsAsync Methode für eine minimale Arbeitsspeicher- und Ressourcenauslastung optimiert.

Die Verwendung des Flags TransmitFileOptions.UseKernelApc in der SocketAsyncEventArgs.SendPacketsFlags -Eigenschaft für den e Parameter kann erhebliche Leistungsvorteile bieten. Wenn der Thread, der den SendPacketsAsync Methodenaufruf initiiert, für schwere Berechnungen verwendet wird, ist es möglich, wenn auch unwahrscheinlich, dass APCs nicht gestartet werden. Beachten Sie, dass es einen Unterschied zwischen Kernel- und Benutzermodus-APCs gibt. Kernel-APCs werden gestartet, wenn sich ein Thread im Wartezustand befindet. Benutzermodus-APCs werden gestartet, wenn sich ein Thread in einem warnbaren Wartezustand befindet.

Gilt für:

Weitere Informationen