Socket.SendFile 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 und optionale Daten synchron an eine verbundene Socket.
Überlädt
| Name | Beschreibung |
|---|---|
| SendFile(String) |
Sendet die Datei |
| SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Sendet die Datei |
| SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Sendet die Datei |
SendFile(String)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die Datei fileName an ein verbundenes Socket Objekt mit der UseDefaultWorkerThread Übertragungskennzeichnung.
public:
void SendFile(System::String ^ fileName);
public void SendFile(string? fileName);
public void SendFile(string fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)
Parameter
- fileName
- String
A String , das den Pfad und den Namen der zu sendenden Datei enthält. Dieser Parameter kann null sein.
Ausnahmen
Der Socket ist nicht mit einem Remotehost verbunden.
Das Socket Objekt wurde geschlossen.
Das Socket Objekt befindet sich nicht im Blockierungsmodus und kann diesen synchronen Aufruf nicht akzeptieren.
Die Datei fileName wurde nicht gefunden.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Beispiele
Im folgenden Codebeispiel wird ein Socket erstellt und verbunden und anschließend eine Datei an den Remotehost gesendet. Die Datei "test.txt" befindet sich im Stammverzeichnis des lokalen Computers.
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);
// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";
// Send file fileName to remote device
Console.WriteLine("Sending {0} to the host.", fileName);
client.SendFile(fileName);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();
Hinweise
Diese Überladung sendet die Datei fileName an den verbundenen Socket. Der flags Parameter ist standardmäßig auf UseDefaultWorkerThread (0) und die und postBuffer die preBuffer Parameter standardmäßig festgelegtnull. Wenn fileName sie sich im lokalen Verzeichnis befindet, kann sie nur mit dem Namen der Datei identifiziert werden. Andernfalls muss der vollständige Pfad und name der Datei angegeben werden. Wildcards (".. \\myfile.txt") und UNC-Freigabenamen ("\\\\freigegebenes Verzeichnis\\myfile.txt") werden unterstützt. Wenn die Datei nicht gefunden wird, wird die Ausnahme FileNotFoundException ausgelöst.
Diese Methode verwendet die TransmitFile In der Windows Sockets 2-API gefundene Funktion. Weitere Informationen zu der TransmitFile Funktion und den zugehörigen Kennzeichen finden Sie in der Dokumentation zu Windows Sockets .
SendFile sendet synchron eine Datei an den Remotehost, der in der Connect oder Accept der Methode angegeben ist. SendFile kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect , andernfalls SendFile wird eine SocketException Ausnahme ausgelöst. Wenn Sie ein verbindungsorientiertes Protokoll verwenden Connect , müssen Sie entweder eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, SendFile bis die Datei gesendet wird. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, SendFile bevor die gesamte Datei gesendet wurde. Es besteht keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der SendFile Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Gilt für:
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die Datei fileName und Puffer von Daten mithilfe des angegebenen TransmitFileOptions Werts an ein verbundenes Socket Objekt.
public:
void SendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile(string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags);
public void SendFile(string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions)
Parameter
- fileName
- String
Der Pfad und der Name der zu sendenden Datei. Dieser Parameter kann null sein.
- preBuffer
- Byte[]
Die zu sendenden Daten, 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, die angibt, wie die Datei übertragen wird.
Ausnahmen
Das Betriebssystem ist nicht Windows NT oder höher.
- oder -
Der Socket ist nicht mit einem Remotehost verbunden.
Das Socket Objekt wurde geschlossen.
Das Socket Objekt befindet sich nicht im Blockierungsmodus und kann diesen synchronen Aufruf nicht akzeptieren.
Die Datei fileName wurde nicht gefunden.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.
Beispiele
Im folgenden Codebeispiel wird ein Socket erstellt und verbunden. Die Datei "test.txt" befindet sich im Stammverzeichnis des lokalen Computers. In diesem Beispiel erstellen wir einen Vorabpuffer und postbuffer von Daten und senden sie mit der Datei an den Remotehost. Die Standardeinstellung TransmitFileOptions wird verwendet.
// Establish the local endpoint for the socket.
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
// Create a TCP socket.
Socket client = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint.
client.Connect(ipEndPoint);
// Send file fileName to the remote host with preBuffer and postBuffer data.
// There is a text file test.txt located in the root directory.
string fileName = "C:\\test.txt";
// Create the preBuffer data.
string string1 = String.Format("This is text data that precedes the file.{0}", Environment.NewLine);
byte[] preBuf = Encoding.ASCII.GetBytes(string1);
// Create the postBuffer data.
string string2 = String.Format("This is text data that will follow the file.{0}", Environment.NewLine);
byte[] postBuf = Encoding.ASCII.GetBytes(string2);
//Send file fileName with buffers and default flags to the remote device.
Console.WriteLine("Sending {0} with buffers to the host.{1}", fileName, Environment.NewLine);
client.SendFile(fileName, preBuf, postBuf, TransmitFileOptions.UseDefaultWorkerThread);
// Release the socket.
client.Shutdown(SocketShutdown.Both);
client.Close();
Hinweise
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 aktuelle Arbeitsverzeichnis befindet, kann er nur mit dem Namen der Datei identifiziert werden. Andernfalls muss der vollständige Pfad und name der Datei angegeben werden. Wildcards (".. \\myfile.txt") und UNC-Freigabenamen ("\\\\freigegebenes Verzeichnis\\myfile.txt") werden unterstützt.
Der flags Parameter stellt den Window Sockets-Dienstanbieter zusätzliche Informationen zur Dateiübertragung bereit. Weitere Informationen zur Verwendung dieses Parameters finden Sie unter TransmitFileOptions.
Diese Methode verwendet die TransmitFile In der Windows Sockets 2-API gefundene Funktion. Weitere Informationen zu der TransmitFile Funktion und den zugehörigen Kennzeichen finden Sie in der Dokumentation zu Windows Sockets .
SendFile sendet synchron eine Datei an den Remotehost, der in der Connect oder Accept der Methode angegeben ist. SendFile kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.
Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen dieser Methode aufrufen Connect . Andernfalls SendFile wird ein SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder Connect eine Remotehostverbindung herstellen oder Accept eine eingehende Verbindung akzeptieren.
Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird blockiert, SendFile bis die gesamte Datei gesendet wird. Im Nichtblockierungsmodus kann der Vorgang erfolgreich abgeschlossen werden, SendFile bevor die gesamte Datei gesendet wurde. Es besteht keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der SendFile Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern der Daten für ein Netzwerk-Senden hatte.
Hinweis
Wenn Sie ein SocketExceptionObjekt erhalten, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode abzurufen. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets Version 2-API-Fehlercodedokumentation eine detaillierte Beschreibung des Fehlers.
Hinweis
Dieses Mitglied gibt Protokollierungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in Ihrer Anwendung aktivieren. Weitere Informationen finden Sie unter Network Tracing in .NET Framework.
Gilt für:
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
- Quelle:
- Socket.cs
Sendet die Datei fileName und Puffer von Daten mithilfe des angegebenen TransmitFileOptions Werts an ein verbundenes Socket Objekt.
public:
void SendFile(System::String ^ fileName, ReadOnlySpan<System::Byte> preBuffer, ReadOnlySpan<System::Byte> postBuffer, System::Net::Sockets::TransmitFileOptions flags);
public void SendFile(string? fileName, ReadOnlySpan<byte> preBuffer, ReadOnlySpan<byte> postBuffer, System.Net.Sockets.TransmitFileOptions flags);
member this.SendFile : string * ReadOnlySpan<byte> * ReadOnlySpan<byte> * System.Net.Sockets.TransmitFileOptions -> unit
Public Sub SendFile (fileName As String, preBuffer As ReadOnlySpan(Of Byte), postBuffer As ReadOnlySpan(Of Byte), flags As TransmitFileOptions)
Parameter
- fileName
- String
A String , das den Pfad und den Namen der zu sendenden Datei enthält. Dieser Parameter kann null sein.
- preBuffer
- ReadOnlySpan<Byte>
A ReadOnlySpan<T> that contains data to be sent before the file is sent. Dieser Puffer kann leer sein.
- postBuffer
- ReadOnlySpan<Byte>
A ReadOnlySpan<T> that contains data to be sent after the file is sent. Dieser Puffer kann leer sein.
- flags
- TransmitFileOptions
Mindestens ein TransmitFileOptions Wert.
Ausnahmen
Das Socket Objekt wurde geschlossen.
Das Socket Objekt ist nicht mit einem Remotehost verbunden.
Das Socket Objekt befindet sich nicht im Blockierungsmodus und kann diesen synchronen Aufruf nicht akzeptieren.
Die Datei fileName wurde nicht gefunden.
Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.