Socket.BeginSendFile Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Sendet eine Datei asynchron an ein verbundenes Socket-Objekt.
Überlädt
BeginSendFile(String, AsyncCallback, Object) |
Sendet die Datei |
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) |
Sendet eine Datei und Datenpuffer asynchron an ein verbundenes Socket-Objekt. |
BeginSendFile(String, AsyncCallback, Object)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die Datei fileName
unter Verwendung des Socket-Flags an ein verbundenes UseDefaultWorkerThread-Objekt.
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- fileName
- String
Eine Zeichenfolge, die den Pfad und Namen der zu sendenden Datei enthält. Dieser Parameter kann null
sein.
- callback
- AsyncCallback
Der AsyncCallback -Delegat.
- state
- Object
Ein Objekt mit Zustandsinformationen für diese Anforderung.
Gibt zurück
Ein IAsyncResult-Objekt, das den asynchronen Sendevorgang darstellt.
Ausnahmen
Das Socket-Objekt wurde geschlossen.
Der Socket ist nicht mit einem Remotehost verbunden.
Die Datei fileName
wurde nicht gefunden.
nur .NET Framework und .NET 5 und früher: Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie unten im Abschnitt Hinweise.
Hinweise
Wichtig
Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin*
und End*
) für neue Entwicklung zu verwenden. Verwenden Sie stattdessen die Task
-basierten Entsprechungen.
Diese Überladung sendet die Datei fileName
über den Socket. Wenn fileName
sich das lokale Verzeichnis befindet, kann es nur mit dem Namen der Datei identifiziert werden. Andernfalls müssen der vollständige Pfad und der name der Datei angegeben werden. Wildcards (".. \\myfile.txt") und UNC-Freigabenamen ("\\\\shared directory\\myfile.txt") werden unterstützt. Wenn die Datei nicht gefunden wird, wird die Ausnahme FileNotFoundException ausgelöst.
Sie können einen Rückruf übergeben, der implementiert wird, BeginSendFile um über den Abschluss des Vorgangs AsyncCallback benachrichtigt zu werden. Beachten Sie, dass der Rückruf während des Aufrufs BeginSendFilevon inline ausgeführt wird, wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abschließt. In diesem Fall wird die CompletedSynchronously Eigenschaft für die zurückgegebene IAsyncResult auf true
festgelegt, um anzugeben, dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState -Eigenschaft von, IAsyncResult um das an die -Methode übergebene Zustandsobjekt BeginSendFile abzurufen.
Der BeginSendFile Vorgang muss durch Aufrufen der EndSendFile -Methode abgeschlossen werden. In der Regel wird die -Methode vom AsyncCallback Delegaten aufgerufen. EndSendFile blockiert den aufrufenden Thread, bis der Vorgang abgeschlossen ist.
Obwohl für verbindungsorientierte Protokolle vorgesehen, BeginSendFile funktioniert sie auch für verbindungslose Protokolle, vorausgesetzt, Sie rufen zuerst die Connect -Methode oder auf, BeginConnect um einen Standard-Remotehost einzurichten. Bei verbindungslosen Protokollen müssen Sie 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 BeginSendFile löst eine Ausnahme aus SocketException .
Hinweis
Wenn Sie eine SocketException Ausnahme erhalten, verwenden Sie die SocketException.ErrorCode -Eigenschaft, um den spezifischen Fehlercode abzurufen.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Hinweis
Der Ausführungskontext (der Sicherheitskontext, der identitätswechselte Benutzer und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket instance und einem bestimmten Rückruf) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.
Gilt für:
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet eine Datei und Datenpuffer asynchron an ein verbundenes Socket-Objekt.
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult
Parameter
- fileName
- String
Eine Zeichenfolge, die den Pfad und Namen der zu sendenden Datei enthält. Dieser Parameter kann null
sein.
- preBuffer
- Byte[]
Die Daten, die gesendet werden sollen, bevor die Datei gesendet wird. Dieser Parameter kann null
sein.
- postBuffer
- Byte[]
Die Daten, die nach dem Senden der Datei gesendet werden sollen. Dieser Parameter kann null
sein.
- flags
- TransmitFileOptions
Eine bitweise Kombination der Enumerationswerte.
- callback
- AsyncCallback
Ein AsyncCallback-Delegat, der nach Abschluss dieses Vorgangs aufgerufen werden soll. Dieser Parameter kann null
sein.
- state
- Object
Ein benutzerdefiniertes Objekt mit Zustandsinformationen für diese Anforderung. Dieser Parameter kann null
sein.
Gibt zurück
Ein IAsyncResult-Objekt, das den asynchronen Vorgang darstellt.
Ausnahmen
Das Socket-Objekt wurde geschlossen.
nur .NET Framework und .NET 5 und früher: Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie unten im Abschnitt Hinweise.
Das Betriebssystem ist nicht Windows NT oder höher.
- oder -
Der Socket ist nicht mit einem Remotehost verbunden.
Die Datei fileName
wurde nicht gefunden.
Hinweise
Wichtig
Dies ist eine Kompatibilitäts-API. Es wird nicht empfohlen, die Methoden APM (Begin*
und End*
) für neue Entwicklung zu verwenden. Verwenden Sie stattdessen die Task
-basierten Entsprechungen.
Diese Überladung erfordert den Namen der Datei, die Sie senden möchten, und eine bitweise Kombination von TransmitFileOptions Werten. Der preBuffer
Parameter enthält alle Daten, die der Datei vorangestellt werden sollen.
postBuffer
enthält Daten, die Sie der Datei folgen möchten. Wenn fileName
sich das lokale Verzeichnis befindet, kann es nur mit dem Namen der Datei identifiziert werden. Andernfalls müssen der vollständige Pfad und der name der Datei angegeben werden. Wildcards (".. \\myfile.txt") und UNC-Freigabenamen ("\\\\shared directory\\myfile.txt") werden unterstützt. Wenn die Datei nicht gefunden wird, wird die Ausnahme FileNotFoundException ausgelöst.
Der flags
Parameter stellt zusätzliche Informationen zur Dateiübertragung bereit. Weitere Informationen zum Verwenden dieses Typs finden Sie unter TransmitFileOptions.
Sie können einen Rückruf übergeben, der implementiert wird, BeginSendFile um über den Abschluss des Vorgangs AsyncCallback benachrichtigt zu werden. Beachten Sie, dass der Rückruf während des Aufrufs BeginSendFilevon inline ausgeführt wird, wenn der zugrunde liegende Netzwerkstapel den Vorgang synchron abschließt. In diesem Fall wird die CompletedSynchronously Eigenschaft für die zurückgegebene IAsyncResult auf true
festgelegt, um anzugeben, dass die Methode synchron abgeschlossen wurde. Verwenden Sie die AsyncState -Eigenschaft von, IAsyncResult um das an die -Methode übergebene Zustandsobjekt BeginSendFile abzurufen.
Der BeginSendFile Vorgang muss durch Aufrufen der EndSendFile -Methode abgeschlossen werden. In der Regel wird die -Methode vom bereitgestellten AsyncCallback Delegat aufgerufen. EndSendFile blockiert den aufrufenden Thread, bis der Vorgang abgeschlossen ist.
Obwohl für verbindungsorientierte Protokolle vorgesehen, BeginSendFile funktioniert sie auch für verbindungslose Protokolle, vorausgesetzt, Sie rufen zuerst die Connect -Methode oder auf, BeginConnect um einen Standard-Remotehost einzurichten. Bei verbindungslosen Protokollen müssen Sie 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 BeginSendFile löst eine Ausnahme aus SocketException .
Hinweis
Wenn Sie eine SocketException Ausnahme erhalten, verwenden Sie die SocketException.ErrorCode -Eigenschaft, um den spezifischen Fehlercode abzurufen.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.
Hinweis
Der Ausführungskontext (der Sicherheitskontext, der identitätswechselte Benutzer und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket instance und einem bestimmten Rückruf) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.