Socket.SendFile Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Verzendt een bestand en optionele gegevens synchroon naar een verbonden Socket.
Overloads
| Name | Description |
|---|---|
| SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Hiermee worden het bestand |
| SendFile(String) |
Hiermee wordt het bestand |
SendFile(String, Byte[], Byte[], TransmitFileOptions)
Hiermee worden het bestand fileName en de buffers van gegevens naar een verbonden Socket object verzonden met behulp van de opgegeven TransmitFileOptions waarde.
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)
Parameters
- fileName
- String
Het pad en de naam van het te verzenden bestand. Deze parameter kan zijn null.
- preBuffer
- Byte[]
De gegevens die moeten worden verzonden voordat het bestand wordt verzonden. Deze parameter kan zijn null.
- postBuffer
- Byte[]
De gegevens die moeten worden verzonden nadat het bestand is verzonden. Deze parameter kan zijn null.
- flags
- TransmitFileOptions
Een bitsgewijze combinatie van de opsommingswaarden die aangeeft hoe het bestand wordt overgedragen.
Uitzonderingen
Het besturingssysteem is niet Windows NT of hoger.
– of –
De socket is niet verbonden met een externe host.
Het Socket object is gesloten.
Het Socket object bevindt zich niet in de blokkeringsmodus en kan deze synchrone aanroep niet accepteren.
Het bestand fileName is niet gevonden.
Er is een fout opgetreden bij het openen van de socket.
Voorbeelden
In het volgende codevoorbeeld wordt een socket gemaakt en verbonden. Het bestandtest.txtbevindt zich in de hoofdmap van de lokale computer. In dit voorbeeld maken we een prebuffer en postbuffer van gegevens en verzenden we deze naar de externe host met het bestand. De standaardwaarde TransmitFileOptions wordt gebruikt.
// 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();
Opmerkingen
Deze overbelasting vereist de naam van het bestand dat u wilt verzenden en een bitsgewijze combinatie van TransmitFileOptions waarden. De preBuffer parameter bevat alle gegevens die u wilt voorafgaan aan het bestand.
postBuffer bevat gegevens die u wilt volgen in het bestand. Als fileName deze zich in de huidige werkmap bevindt, kan deze worden geïdentificeerd met alleen de naam van het bestand. Anders moet het volledige pad en de naam van het bestand worden opgegeven. Jokertekens (".. \\myfile.txt") en UNC-sharenamen ("\\\\shared directory\\myfile.txt") worden ondersteund.
De flags parameter biedt de Window Sockets-serviceprovider aanvullende informatie over de bestandsoverdracht. Zie voor meer informatie over het gebruik van deze parameter TransmitFileOptions.
Deze methode maakt gebruik van de functie TransmitFile in de Windows Sockets 2-API. Zie de documentatie Windows Sockets voor meer informatie over de functie TransmitFile en de bijbehorende vlaggen.
SendFile verzendt synchroon een bestand naar de externe host die is opgegeven in de Connect of Accept methode. SendFile kan worden gebruikt voor zowel verbindingsgeoriënteerde als voor verbindingsloze protocollen.
Als u een verbindingsloos protocol gebruikt, moet u aanroepen voordat u deze methode aanroept Connect . SendFile Anders genereert u een SocketException. Als u een verbindingsgeoriënteerd protocol gebruikt, moet u een Connect externe hostverbinding tot stand brengen of gebruiken Accept om een binnenkomende verbinding te accepteren.
Als u een verbindingsgeoriënteerd protocol gebruikt, SendFile blokkeert u totdat het hele bestand wordt verzonden. In de niet-blokkeringsmodus SendFile kan het voltooien voordat het hele bestand is verzonden. Er is geen garantie dat de gegevens die u verzendt, onmiddellijk in het netwerk worden weergegeven. Om de netwerkefficiëntie te verhogen, kan het onderliggende systeem de overdracht vertragen totdat een aanzienlijke hoeveelheid uitgaande gegevens wordt verzameld. Een geslaagde voltooiing van de SendFile methode betekent dat het onderliggende systeem ruimte heeft gehad om uw gegevens te bufferen voor een netwerk verzenden.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.
Van toepassing op
SendFile(String)
Hiermee wordt het bestand fileName verzonden naar een verbonden Socket object met de UseDefaultWorkerThread verzendvlag.
public:
void SendFile(System::String ^ fileName);
public void SendFile(string fileName);
member this.SendFile : string -> unit
Public Sub SendFile (fileName As String)
Parameters
- fileName
- String
Een String met het pad en de naam van het te verzenden bestand. Deze parameter kan zijn null.
Uitzonderingen
De socket is niet verbonden met een externe host.
Het Socket object is gesloten.
Het Socket object bevindt zich niet in de blokkeringsmodus en kan deze synchrone aanroep niet accepteren.
Het bestand fileName is niet gevonden.
Er is een fout opgetreden bij het openen van de socket.
Voorbeelden
In het volgende codevoorbeeld wordt een socket gemaakt en verbonden en wordt vervolgens een bestand naar de externe host verzonden. Het bestandtest.txtbevindt zich in de hoofdmap van de lokale computer.
// 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();
Opmerkingen
Deze overbelasting verzendt het bestand fileName naar de aangesloten socket. De flags parameter wordt standaard ingesteld op UseDefaultWorkerThread (0) en de preBuffer parameters worden postBuffer standaard ingesteld op null. Als fileName deze zich in de lokale map bevindt, kan deze worden geïdentificeerd met alleen de naam van het bestand. Anders moet het volledige pad en de naam van het bestand worden opgegeven. Jokertekens (".. \\myfile.txt") en UNC-sharenamen ("\\\\shared directory\\myfile.txt") worden ondersteund. Als het bestand niet wordt gevonden, wordt de uitzondering FileNotFoundException gegenereerd.
Deze methode maakt gebruik van de functie TransmitFile in de Windows Sockets 2-API. Zie de documentatie Windows Sockets voor meer informatie over de functie TransmitFile en de bijbehorende vlaggen.
SendFile verzendt synchroon een bestand naar de externe host die is opgegeven in de Connect of Accept methode. SendFile kan worden gebruikt voor zowel verbindingsgeoriënteerde als voor verbindingsloze protocollen.
Als u een verbindingsloos protocol gebruikt, moet u aanroepen voordat u deze methode aanroept Connect , anders SendFile genereert u een SocketException uitzondering. Als u een verbindingsgeoriënteerd protocol gebruikt, moet u een Connect externe hostverbinding tot stand brengen of gebruiken Accept om een binnenkomende verbinding te accepteren.
Als u een verbindingsgeoriënteerd protocol gebruikt, SendFile blokkeert u totdat het bestand wordt verzonden. In de niet-blokkeringsmodus SendFile kan het voltooien voordat het hele bestand is verzonden. Er is geen garantie dat de gegevens die u verzendt, onmiddellijk in het netwerk worden weergegeven. Om de netwerkefficiëntie te verhogen, kan het onderliggende systeem de overdracht vertragen totdat een aanzienlijke hoeveelheid uitgaande gegevens wordt verzameld. Een geslaagde voltooiing van de SendFile methode betekent dat het onderliggende systeem ruimte heeft gehad om uw gegevens te bufferen voor een netwerk verzenden.
Note
Als u een SocketExceptionontvangt, gebruikt u de SocketException.ErrorCode eigenschap om de specifieke foutcode te verkrijgen. Nadat u deze code hebt verkregen, raadpleegt u de Windows Sockets versie 2 API-foutcode documentatie voor een gedetailleerde beschrijving van de fout.
Note
Dit lid voert traceringsgegevens uit wanneer u netwerktracering inschakelt in uw toepassing. Zie Network Tracing in .NET Framework voor meer informatie.