Socket.SendFile Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Envia um arquivo e dados opcionais de forma síncrona para um Socket conectado.
Sobrecargas
SendFile(String) |
Envia o arquivo |
SendFile(String, Byte[], Byte[], TransmitFileOptions) |
Envia o arquivo |
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions) |
Envia o arquivo |
SendFile(String)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o arquivo fileName
para um objeto Socket conectado com o sinalizador de transmissão UseDefaultWorkerThread.
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)
Parâmetros
- fileName
- String
Um String que contém o caminho e o nome do arquivo a ser enviado. Esse parâmetro pode ser null
.
Exceções
O soquete não está conectado a um host remoto.
O objeto Socket foi fechado.
O objeto Socket não está no modo de bloqueio e não pode aceitar essa chamada síncrona.
O arquivo fileName
não foi encontrado.
Ocorreu um erro ao tentar acessar o soquete.
Exemplos
O exemplo de código a seguir cria e conecta um soquete e envia um arquivo para o host remoto. O arquivo "test.txt" está localizado no diretório raiz do computador local.
// 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();
Comentários
Essa sobrecarga envia o arquivo fileName
para o soquete conectado. O flags
parâmetro usa UseDefaultWorkerThread como padrão (0) e os preBuffer
parâmetros e postBuffer
são padrão para null
. Se fileName
estiver no diretório local, ele poderá ser identificado apenas com o nome do arquivo; caso contrário, o caminho completo e o nome do arquivo deverão ser especificados. Curingas (".. \\myfile.txt") e nomes de compartilhamento UNC ("\\\\directory\\myfile.txt compartilhado") têm suporte. Se o arquivo não for encontrado, a exceção FileNotFoundException será gerada.
Esse método usa a TransmitFile
função encontrada na API do Windows Sockets 2. Para obter mais informações sobre a TransmitFile
função e seus sinalizadores, consulte a documentação do Windows Sockets .
SendFile envia um arquivo de forma síncrona para o host remoto especificado no Connect método ou Accept . SendFile pode ser usado para protocolos orientados a conexão e para protocolos sem conexão.
Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método; caso contrário SendFile , gerará uma SocketException exceção. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo orientado a conexão, SendFile será bloqueado até que o arquivo seja enviado. No modo sem bloqueio, SendFile pode ser concluído com êxito antes que todo o arquivo seja enviado. Não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do SendFile método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Aplica-se a
SendFile(String, Byte[], Byte[], TransmitFileOptions)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o arquivo fileName
e buffers de dados a um Socket conectado usando o valor TransmitFileOptions especificado.
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)
Parâmetros
- fileName
- String
O caminho e o nome do arquivo a ser enviado. Esse parâmetro pode ser null
.
- preBuffer
- Byte[]
Os dados a serem enviados antes que o arquivo seja enviado. Esse parâmetro pode ser null
.
- postBuffer
- Byte[]
Os dados a serem enviados após o envio do arquivo. Esse parâmetro pode ser null
.
- flags
- TransmitFileOptions
Uma combinação bit a bit dos valores de enumeração que especifica como o arquivo é transferido.
Exceções
O sistema operacional não é o Windows NT ou posterior.
- ou -
O soquete não está conectado a um host remoto.
O objeto Socket foi fechado.
O objeto Socket não está no modo de bloqueio e não pode aceitar essa chamada síncrona.
O arquivo fileName
não foi encontrado.
Ocorreu um erro ao tentar acessar o soquete.
Exemplos
O exemplo de código a seguir cria e conecta um soquete. O arquivo "test.txt" está localizado no diretório raiz do computador local. Neste exemplo, criamos um pré-cofre e um postbuffer de dados e os enviamos para o host remoto com o arquivo . O padrão TransmitFileOptions é usado.
// 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();
Comentários
Essa sobrecarga requer o nome do arquivo que você deseja enviar e uma combinação bit a bit de TransmitFileOptions valores. O preBuffer
parâmetro contém todos os dados que você deseja preceder o arquivo.
postBuffer
contém dados que você deseja seguir o arquivo. Se fileName
estiver no diretório de trabalho atual, ele poderá ser identificado apenas com o nome do arquivo; caso contrário, o caminho completo e o nome do arquivo deverão ser especificados. Curingas (".. \\myfile.txt") e nomes de compartilhamento UNC ("\\\\directory\\myfile.txt compartilhado") têm suporte.
O flags
parâmetro fornece ao provedor de serviços de Soquetes de Janela informações adicionais sobre a transferência de arquivo. Para obter mais informações sobre como usar esse parâmetro, consulte TransmitFileOptions.
Esse método usa a TransmitFile
função encontrada na API do Windows Sockets 2. Para obter mais informações sobre a TransmitFile
função e seus sinalizadores, consulte a documentação do Windows Sockets .
SendFile envia um arquivo de forma síncrona para o host remoto especificado no Connect método ou Accept . SendFile pode ser usado para protocolos orientados a conexão e para protocolos sem conexão.
Se você estiver usando um protocolo sem conexão, deverá chamar Connect antes de chamar esse método; caso contrário SendFile , gerará um SocketException. Se você estiver usando um protocolo orientado a conexão, deverá usar Connect para estabelecer uma conexão de host remoto ou usar Accept para aceitar uma conexão de entrada.
Se você estiver usando um protocolo orientado a conexão, SendFile será bloqueado até que todo o arquivo seja enviado. No modo sem bloqueio, SendFile pode ser concluído com êxito antes que todo o arquivo seja enviado. Não há nenhuma garantia de que os dados enviados serão exibidos na rede imediatamente. Para aumentar a eficiência da rede, o sistema subjacente pode atrasar a transmissão até que uma quantidade significativa de dados de saída seja coletada. Uma conclusão bem-sucedida do SendFile método significa que o sistema subjacente teve espaço para armazenar seus dados em buffer para um envio de rede.
Observação
Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Aplica-se a
SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o arquivo fileName
e buffers de dados a um Socket conectado usando o valor TransmitFileOptions especificado.
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)
Parâmetros
- fileName
- String
Um String que contém o caminho e o nome do arquivo a ser enviado. Esse parâmetro pode ser null
.
- preBuffer
- ReadOnlySpan<Byte>
Um ReadOnlySpan<T> que contém dados a serem enviados antes que o arquivo seja enviado. Esse buffer pode estar vazio.
- postBuffer
- ReadOnlySpan<Byte>
Um ReadOnlySpan<T> que contém dados a serem enviados após o envio do arquivo. Esse buffer pode estar vazio.
- flags
- TransmitFileOptions
Um ou mais valores TransmitFileOptions.
Exceções
O objeto Socket foi fechado.
O Socket objeto não está conectado a um host remoto.
O objeto Socket não está no modo de bloqueio e não pode aceitar essa chamada síncrona.
O arquivo fileName
não foi encontrado.
Ocorreu um erro ao tentar acessar o soquete.