Socket.SendFile Metod

Definition

Skickar en fil och valfria data synkront till en ansluten Socket.

Överlagringar

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

Skickar filen fileName och buffertar av data till ett anslutet Socket objekt med det angivna TransmitFileOptions värdet.

SendFile(String)

Skickar filen fileName till ett anslutet Socket objekt med överföringsflaggan UseDefaultWorkerThread .

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

Skickar filen fileName och buffertar av data till ett anslutet Socket objekt med det angivna TransmitFileOptions värdet.

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)

Parametrar

fileName
String

Sökvägen och namnet på filen som ska skickas. Den här parametern kan vara null.

preBuffer
Byte[]

De data som ska skickas innan filen skickas. Den här parametern kan vara null.

postBuffer
Byte[]

De data som ska skickas efter att filen har skickats. Den här parametern kan vara null.

flags
TransmitFileOptions

En bitvis kombination av uppräkningsvärdena som anger hur filen överförs.

Undantag

Operativsystemet är inte Windows NT eller senare.

-eller-

Socketen är inte ansluten till en fjärrvärd.

Objektet Socket har stängts.

Objektet Socket är inte i blockeringsläge och kan inte acceptera det här synkrona anropet.

Det gick inte att hitta filen fileName .

Ett fel uppstod vid försök att komma åt socketen.

Exempel

Följande kodexempel skapar och ansluter en socket. Filen "test.txt" finns i rotkatalogen på den lokala datorn. I det här exemplet skapar vi en prebuffer och postbuffer med data och skickar dem till fjärrvärden med filen. Standardvärdet TransmitFileOptions används.

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

Kommentarer

Den här överlagringen kräver namnet på den fil som du vill skicka och en bitvis kombination av TransmitFileOptions värden. Parametern preBuffer innehåller alla data som du vill föregå filen. postBuffer innehåller data som du vill följa filen. Om fileName finns i den aktuella arbetskatalogen kan den identifieras med bara namnet på filen. Annars måste filens fullständiga sökväg och namn anges. Jokertecken (".. \\myfile.txt") och UNC-resursnamn ("\\\\delad katalog\\myfile.txt") stöds.

Parametern flags ger Window Sockets-tjänstprovidern ytterligare information om filöverföringen. Mer information om hur du använder den här parametern finns i TransmitFileOptions.

Den här metoden använder funktionen TransmitFile som finns i API:et Windows Sockets 2. Mer information om funktionen TransmitFile och dess flaggor finns i dokumentationen Windows Sockets.

SendFile skickar synkront en fil till fjärrvärden som anges i Connect metoden eller Accept . SendFile kan användas för både anslutningsorienterade och anslutningslösa protokoll.

Om du använder ett anslutningslöst protokoll måste du anropa Connect innan du anropar den här metoden. Annars SendFile genereras ett SocketException. Om du använder ett anslutningsorienterat protokoll måste du antingen använda Connect för att upprätta en fjärrvärdanslutning eller använda Accept för att acceptera en inkommande anslutning.

Om du använder ett anslutningsorienterat protokoll SendFile blockerar du tills hela filen skickas. I icke-blockeringsläge SendFile kan slutföras innan hela filen har skickats. Det finns ingen garanti för att de data du skickar visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendFile metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.

Note

Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.

Note

Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.

Gäller för

SendFile(String)

Skickar filen fileName till ett anslutet Socket objekt med överföringsflaggan UseDefaultWorkerThread .

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

Parametrar

fileName
String

En String som innehåller sökvägen och namnet på filen som ska skickas. Den här parametern kan vara null.

Undantag

Socketen är inte ansluten till en fjärrvärd.

Objektet Socket har stängts.

Objektet Socket är inte i blockeringsläge och kan inte acceptera det här synkrona anropet.

Det gick inte att hitta filen fileName .

Ett fel uppstod vid försök att komma åt socketen.

Exempel

Följande kodexempel skapar och ansluter en socket och skickar sedan en fil till fjärrvärden. Filen "test.txt" finns i rotkatalogen på den lokala datorn.

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

Kommentarer

Den här överlagringen skickar filen fileName till den anslutna socketen. Parametern flags är som standard UseDefaultWorkerThread (0) och parametrarna preBuffer och postBuffer är som standard null. Om fileName finns i den lokala katalogen kan den identifieras med bara namnet på filen. Annars måste filens fullständiga sökväg och namn anges. Jokertecken (".. \\myfile.txt") och UNC-resursnamn ("\\\\delad katalog\\myfile.txt") stöds. Om filen inte hittas genereras undantaget FileNotFoundException .

Den här metoden använder funktionen TransmitFile som finns i API:et Windows Sockets 2. Mer information om funktionen TransmitFile och dess flaggor finns i dokumentationen Windows Sockets.

SendFile skickar synkront en fil till fjärrvärden som anges i Connect metoden eller Accept . SendFile kan användas för både anslutningsorienterade och anslutningslösa protokoll.

Om du använder ett anslutningslöst protokoll måste du anropa Connect innan du anropar den här metoden, annars SendFile genereras ett SocketException undantag. Om du använder ett anslutningsorienterat protokoll måste du antingen använda Connect för att upprätta en fjärrvärdanslutning eller använda Accept för att acceptera en inkommande anslutning.

Om du använder ett anslutningsorienterat protokoll SendFile blockerar du tills filen skickas. I icke-blockeringsläge SendFile kan slutföras innan hela filen har skickats. Det finns ingen garanti för att de data du skickar visas i nätverket omedelbart. För att öka nätverkseffektiviteten kan det underliggande systemet fördröja överföringen tills en betydande mängd utgående data samlas in. Ett lyckat slutförande av SendFile metoden innebär att det underliggande systemet har haft utrymme för att buffera dina data för en nätverkssändning.

Note

Om du får en SocketExceptionanvänder du SocketException.ErrorCode egenskapen för att hämta den specifika felkoden. När du har fått den här koden läser du felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.

Note

Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing in .NET Framework.

Gäller för