Socket.SendPacketsAsync(SocketAsyncEventArgs) Methode

Definition

Sendet eine Auflistung von Dateien oder Datenpuffern im Speicher asynchron an ein verbundenes Socket-Objekt.Sends a collection of files or in memory data buffers asynchronously to a connected Socket object.

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.The SocketAsyncEventArgs object to use for this asynchronous socket operation.

Gibt zurück

true, wenn der E/A-Vorgang aussteht.true if the I/O operation is pending. Das Completed-Ereignis für den e-Parameter wird nach dem Abschluss des Vorgangs ausgelöst.The Completed event on the e parameter will be raised upon completion of the operation.

false, wenn der E/A-Vorgang synchron abgeschlossen wurde.false if the I/O operation completed synchronously. 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.In this case, The Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.

Ausnahmen

Die in der FilePath-Eigenschaft angegebene Datei wurde nicht gefunden.The file specified in the FilePath property was not found.

Es wird bereits ein Socketvorgang mit dem im e-Parameter angegebenen SocketAsyncEventArgs-Objekt ausgeführt.A socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

Für diese Methode ist Windows XP oder höher erforderlich.Windows XP or later is required for this method. Diese Ausnahme tritt auch auf, wenn Socket nicht mit einem Remotehost verbunden ist.This exception also occurs if the Socket is not connected to a remote host.

Der Socket wurde geschlossen.The Socket has been closed.

Ein verbindungsloser Socket wird verwendet, und die verwendete Datei überschreitet die maximale Paketgröße des zugrunde liegenden Transports.A connectionless Socket is being used and the file being sent exceeds the maximum packet size of the underlying transport.

Hinweise

Die SendPacketsAsync-Methode wird verwendet, um eine Auflistung von Dateien oder in Arbeitsspeicher-Daten Puffern an den Remote Host zu senden.The SendPacketsAsync method is used to send a collection of files or in memory data buffers to remote host. Der Socket muss bereits mit dem Remote Host verbunden sein.The Socket must already be connected to the remote host.

Wenn eine System.Net.Sockets.SendPacketsElement auf eine Datei im Arbeitsverzeichnis verweist, kann Sie nur mit dem Namen der Datei identifiziert werden. Andernfalls müssen der vollständige Pfad und der Name der Datei angegeben werden.If a System.Net.Sockets.SendPacketsElement references a file in the working directory, it may be identified with just the name of the file; otherwise, the full path and name of the file must be specified. Platzhalter und UNC-Freigabe Namen werden unterstützt.Wildcards and UNC share names are supported. Wenn die Datei nicht gefunden wird, wird FileNotFoundException ausgelöst.If the file is not found, FileNotFoundException is thrown.

Wenn Sie über den Abschluss benachrichtigt werden möchten, müssen Sie eine Rückruf Methode erstellen, die den EventHandler-<SocketAsyncEventArgs-> Delegaten implementiert und den Rückruf an das SocketAsyncEventArgs.Completed Ereignis anfügt.To be notified of completion, you must create a callback method that implements the EventHandler<SocketAsyncEventArgs> delegate and attach the callback to the SocketAsyncEventArgs.Completed event.

Die SocketAsyncEventArgs.SendPacketsFlags-Eigenschaft des e-Parameters stellt dem Window Sockets-Dienstanbieter zusätzliche Informationen über die Dateiübertragung zur Verfügung.The SocketAsyncEventArgs.SendPacketsFlags property on the e parameter provides the Window Sockets service provider with additional information about the file transfer. Weitere Informationen zum Verwenden dieses Typs finden Sie unter TransmitFileOptions.For more information about how to use this parameter, see TransmitFileOptions.

Die folgenden Eigenschaften und Ereignisse für das System.Net.Sockets.SocketAsyncEventArgs Objekt sind erforderlich, um diese Methode erfolgreich aufzurufen:The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required to successfully call this method:

Der Aufrufer kann die SocketAsyncEventArgs.UserToken-Eigenschaft auf ein beliebiges Benutzer Zustands Objekt festlegen, bevor die SendPacketsAsync-Methode aufgerufen wird, damit die Informationen in der Rückruf Methode abgerufen werden können.The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the SendPacketsAsync method, so that the information will be retrievable in the callback method. Wenn der Rückruf mehr Informationen benötigt als ein einzelnes Objekt, kann eine kleine Klasse erstellt werden, die die anderen erforderlichen Zustandsinformationen als Member enthält.If the callback needs more information than a single object, a small class can be created to hold the other required state information as members.

Diese Methode verwendet die transmitpaketen-Funktion, die in der Windows Sockets 2-API enthalten ist.This method uses the TransmitPackets function found in the Windows Sockets 2 API. Weitere Informationen zur transmitpaketen-Funktion und ihren Flags finden Sie in der Windows Sockets -Dokumentation.For more information about the TransmitPackets function and its flags, see the Windows Sockets documentation.

Obwohl die-Methode für Verbindungs orientierte Protokolle vorgesehen ist, kann die SendPacketsAsync-Methode auch für verbindungslose Protokolle verwendet werden, vorausgesetzt, dass Sie zuerst die Methode BeginConnect, Connectoder ConnectAsync zum Einrichten eines Standard Remote Hosts aufruft.Although intended for connection-oriented protocols, the SendPacketsAsync method also works for connectionless protocols, provided that you first call the BeginConnect, Connect, or ConnectAsync method to establish a default remote host. Bei Verbindungs losen Protokollen müssen Sie auch sicherstellen, dass die Größe der Datei nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet.With connectionless protocols, you must also be sure that the size of your file does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und SendPacketsAsync löst eine SocketException Ausnahme aus.If it does, the datagram is not sent and SendPacketsAsync throws a SocketException exception.

Die SendPacketsAsync-Methode wird entsprechend dem Betriebssystem optimiert, in dem Sie verwendet wird.The SendPacketsAsync method is optimized according to the operating system on which it is used. Bei Windows Server-Editionen ist die SendPacketsAsync-Methode für eine hohe Leistung optimiert.On Windows server editions, the SendPacketsAsync method is optimized for high performance.

In den Windows-Client Editionen ist die SendPacketsAsync-Methode für die minimale Arbeitsspeicher-und Ressourcenauslastung optimiert.On Windows client editions, the SendPacketsAsync method is optimized for minimum memory and resource utilization.

Die Verwendung des TransmitFileOptions.UseKernelApc-Flags in der SocketAsyncEventArgs.SendPacketsFlags-Eigenschaft des e-Parameters kann zu erheblichen Leistungsvorteilen führen.Use of the TransmitFileOptions.UseKernelApc flag in the SocketAsyncEventArgs.SendPacketsFlags property on the e parameter can deliver significant performance benefits. Wenn der Thread, der den SendPacketsAsync Methoden aufzurufen initiiert, für hohe Berechnungen verwendet wird, ist es möglich, dass die APCs nicht gestartet werden können, obwohl dies unwahrscheinlich ist.If the thread initiating the SendPacketsAsync method call is being used for heavy computations, it is possible, though unlikely, that APCs could be prevented from launching. Beachten Sie, dass es einen Unterschied zwischen Kernel-und benutzermodusapcs gibt.Note that there is a difference between kernel and user-mode APCs. Kernel-APCs werden gestartet, wenn sich ein Thread in einem Wartezustand befindet.Kernel APCs launch when a thread is in a wait state. Benutzermodusapcs wird gestartet, wenn sich ein Thread in einem wartewarnbaren Wartestatus befindet.User-mode APCs launch when a thread is in an alertable wait state

Gilt für:

Siehe auch