Socket.SendFile Methode

Definition

Sendet eine Datei und optionale Daten synchron an einen verbundenen Socket.Sends a file and optional data synchronously to a connected Socket.

Überlädt

SendFile(String)

Sendet die Datei fileName mit dem Socket-Übertragungsflag an ein verbundenes UseDefaultWorkerThread-Objekt.Sends the file fileName to a connected Socket object with the UseDefaultWorkerThread transmit flag.

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Sendet die Datei fileName und puffert Daten mit dem angegebenen TransmitFileOptions-Wert in einem verbundenen Socket-Objekt.Sends the file fileName and buffers of data to a connected Socket object using the specified TransmitFileOptions value.

SendFile(String)

Sendet die Datei fileName mit dem Socket-Übertragungsflag an ein verbundenes UseDefaultWorkerThread-Objekt.Sends the file fileName to a connected Socket object with the UseDefaultWorkerThread transmit flag.

public:
 void SendFile(System::String ^ fileName);
public void SendFile (string fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)

Parameter

fileName
String

Ein String, der den Pfad und Namen der Datei enthält, die gesendet werden soll.A String that contains the path and name of the file to be sent. Dieser Parameter kann null sein.This parameter can be null.

Ausnahmen

Der Socket ist nicht mit einem Remotehost verbunden.The socket is not connected to a remote host.

Das Socket-Objekt wurde geschlossen.The Socket object has been closed.

Das Socket-Objekt ist nicht im Blockierungsmodus und kann diesen synchronen Aufruf nicht annehmen.The Socket object is not in blocking mode and cannot accept this synchronous call.

Die Datei fileName wurde nicht gefunden.The file fileName was not found.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Beispiele

Im folgenden Codebeispiel wird ein Socket erstellt und verbunden, und anschließend wird eine Datei an den Remote Host gesendet.The following code example creates and connects a socket and then sends a file to the remote host. Die Datei "Test. txt" befindet sich im Stammverzeichnis des lokalen Computers.The file "test.txt" is located in the root directory of the local machine.

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew 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();
    // 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.This overload sends the file fileName to the connected socket. Der flags-Parameter ist standardmäßig UseDefaultWorkerThread (0), und die Parameter preBuffer und postBuffer werden standardmäßig auf null.The flags parameter defaults to UseDefaultWorkerThread (0), and the preBuffer and postBuffer parameters default to null. Wenn sich fileName im lokalen Verzeichnis befindet, wird es möglicherweise nur mit dem Namen der Datei identifiziert. Andernfalls müssen der vollständige Pfad und der Name der Datei angegeben werden.If fileName is in the local 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 ("..\\MyFile.txt ") und UNC-Freigabe Namen ("\\\\Shared Directory\\MyFile.txt ") werden unterstützt.Wildcards ("..\\myfile.txt") and UNC share names ("\\\\shared directory\\myfile.txt") are supported. Wenn die Datei nicht gefunden wird, wird die Ausnahme FileNotFoundException ausgelöst.If the file is not found, the exception FileNotFoundException is thrown.

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

SendFile synchron eine Datei an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist.SendFile synchronously sends a file to the remote host specified in the Connect or Accept method. SendFile können sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.SendFile can be used for both connection-oriented and for connectionless protocols.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect aufrufen, bevor Sie diese Methode aufrufen; andernfalls löst SendFile eine SocketException Ausnahme aus.If you are using a connectionless protocol, you must call Connect before calling this method, otherwise SendFile throws a SocketException exception. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection or use Accept to accept an incoming connection.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird SendFile blockiert, bis die Datei gesendet wird.If you are using a connection-oriented protocol, SendFile blocks until the file is sent. Im nicht blockierenden Modus können SendFile erfolgreich abgeschlossen werden, bevor die gesamte Datei gesendet wurde.In nonblocking mode, SendFile may complete successfully before the entire file has been sent. Es gibt keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Ein erfolgreicher Abschluss der SendFile-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendFile method means that the underlying system has had room to buffer your data for a network send.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

SendFile(String, Byte[], Byte[], TransmitFileOptions)

Sendet die Datei fileName und puffert Daten mit dem angegebenen TransmitFileOptions-Wert in einem verbundenen Socket-Objekt.Sends the file fileName and buffers of data to a connected Socket object using the specified TransmitFileOptions value.

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);
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

Ein String, der den Pfad und Namen der Datei enthält, die gesendet werden soll.A String that contains the path and name of the file to be sent. Dieser Parameter kann null sein.This parameter can be null.

preBuffer
Byte[]

Ein Byte-Array, das Daten enthält, die gesendet werden sollen, bevor die Datei gesendet wird.A Byte array that contains data to be sent before the file is sent. Dieser Parameter kann nullsein.This parameter can be null.

postBuffer
Byte[]

Ein Byte-Array, das Daten enthält, die gesendet werden sollen, nachdem die Datei gesendet wurde.A Byte array that contains data to be sent after the file is sent. Dieser Parameter kann null sein.This parameter can be null.

flags
TransmitFileOptions

Mindestens ein TransmitFileOptions-Wert.One or more of TransmitFileOptions values.

Ausnahmen

Das Betriebssystem ist nicht Windows NT oder höher.The operating system is not Windows NT or later.

- oder --or-

Der Socket ist nicht mit einem Remotehost verbunden.The socket is not connected to a remote host.

Das Socket-Objekt wurde geschlossen.The Socket object has been closed.

Das Socket-Objekt ist nicht im Blockierungsmodus und kann diesen synchronen Aufruf nicht annehmen.The Socket object is not in blocking mode and cannot accept this synchronous call.

Die Datei fileName wurde nicht gefunden.The file fileName was not found.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Beispiele

Im folgenden Codebeispiel wird ein Socket erstellt und verbunden.The following code example creates and connects a socket. Die Datei "Test. txt" befindet sich im Stammverzeichnis des lokalen Computers.The file "test.txt" is located in the root directory of the local machine. In diesem Beispiel erstellen wir einen vorab Puffer und einen postBuffer von Daten und senden diese mit der Datei an den Remote Host.In this example, we create a prebuffer and postbuffer of data and send them to the remote host with the file. Die Standard TransmitFileOptions werden verwendet.The default TransmitFileOptions are used.

// Establish the local endpoint for the socket.
IPHostEntry^ ipHost = Dns::GetHostEntry( Dns::GetHostName() );
IPAddress^ ipAddr = ipHost->AddressList[ 0 ];
IPEndPoint^ ipEndPoint = gcnew IPEndPoint( ipAddr,11000 );

// Create a TCP socket.
Socket^ client = gcnew 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 );
array<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 );
array<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();
     // 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.This overload requires the name of the file you want to send and a bitwise combination of TransmitFileOptions values. Der preBuffer-Parameter enthält alle Daten, die Sie der Datei vorausgehen möchten.The preBuffer parameter contains any data you want to precede the file. postBuffer enthält Daten, die Sie der Datei folgen möchten.postBuffer contains data you want to follow the file. Wenn sich fileName im aktuellen Arbeitsverzeichnis befindet, wird es möglicherweise nur mit dem Namen der Datei identifiziert. Andernfalls müssen der vollständige Pfad und der Name der Datei angegeben werden.If fileName is in the current 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 ("..\\MyFile.txt ") und UNC-Freigabe Namen ("\\\\Shared Directory\\MyFile.txt ") werden unterstützt.Wildcards ("..\\myfile.txt") and UNC share names ("\\\\shared directory\\myfile.txt") are supported.

Der flags-Parameter stellt dem Window Sockets-Dienstanbieter zusätzliche Informationen über die Dateiübertragung zur Verfügung.The flags 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.

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

SendFile synchron eine Datei an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist.SendFile synchronously sends a file to the remote host specified in the Connect or Accept method. SendFile können sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.SendFile can be used for both connection-oriented and for connectionless protocols.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect aufrufen, bevor Sie diese Methode aufrufen. Andernfalls wird SendFile eine SocketExceptionauslöst.If you are using a connectionless protocol, you must call Connect before calling this method; otherwise SendFile throws a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird SendFile blockiert, bis die gesamte Datei gesendet wird.If you are using a connection-oriented protocol, SendFile blocks until the entire file is sent. Im nicht blockierenden Modus können SendFile erfolgreich abgeschlossen werden, bevor die gesamte Datei gesendet wurde.In nonblocking mode, SendFile may complete successfully before the entire file has been sent. Es gibt keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Ein erfolgreicher Abschluss der SendFile-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendFile method means that the underlying system has had room to buffer your data for a network send.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Gilt für: