Socket.BeginSendFile Methode

Definition

Sendet eine Datei asynchron an ein verbundenes Socket-Objekt.

Überlädt

BeginSendFile(String, AsyncCallback, Object)

Sendet die Datei fileName unter Verwendung des Socket-Flags an ein verbundenes UseDefaultWorkerThread-Objekt.

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.

Gilt für: