Freigeben über


Socket.SendPacketsAsync(SocketAsyncEventArgs) Methode

Definition

Sendet eine Sammlung von Dateien oder in Speicherdatenpuffern 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 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

Die in der FilePath Eigenschaft angegebene Datei wurde nicht gefunden.

Ein Socketvorgang wurde bereits mit dem SocketAsyncEventArgs im e Parameter angegebenen Objekt ausgeführt.

Die Socket Verbindung ist nicht mit einem Remotehost verbunden.

Das Socket wurde geschlossen.

Es wird keine Verbindung Socket verwendet, und die gesendete 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 Remotehost zu senden. Die Socket Verbindung muss bereits mit dem Remotehost hergestellt werden.

Wenn eine System.Net.Sockets.SendPacketsElement Datei im Arbeitsverzeichnis referenziert wird, kann sie nur mit dem Namen der Datei identifiziert werden. Andernfalls muss der vollständige Pfad und name der Datei angegeben werden. Wildcards und UNC-Freigabenamen werden unterstützt. Wenn die Datei nicht gefunden wird, FileNotFoundException wird diese 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 den Window Sockets-Dienstanbieter mit zusätzlichen Informationen zur Dateiübertragung bereit. Weitere Informationen zur Verwendung dieses Parameters 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 Benutzerstatusobjekt festlegen, das vor dem Aufrufen der SendPacketsAsync 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.

Diese Methode verwendet die TransmissionPackets-Funktion in der Windows Sockets 2-API. Weitere Informationen zur TransmitPackets-Funktion und den zugehörigen Flags finden Sie in der Dokumentation zu Windows Sockets .

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

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

Bei Windows-Clienteditionen ist die SendPacketsAsync Methode für 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, aber unwahrscheinlich, dass APCs nicht gestartet werden können. Beachten Sie, dass es einen Unterschied zwischen Kernel- und Benutzermodus-APCs gibt. Kernel-APCs werden gestartet, wenn sich ein Thread in einem Wartezustand befindet. Benutzermodus-APCs werden gestartet, wenn sich ein Thread in einem warnbaren Wartezustand befindet

Gilt für:

Weitere Informationen