Socket.BeginSendFile 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 de forma assíncrona para um objeto Socket conectado.
Sobrecargas
BeginSendFile(String, AsyncCallback, Object) |
Envia o arquivo |
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) |
Envia um arquivo e buffers de dados de forma assíncrona para um objeto Socket conectado. |
BeginSendFile(String, AsyncCallback, Object)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia o arquivo fileName
para um objeto Socket conectado usando o sinalizador UseDefaultWorkerThread.
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string? fileName, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, AsyncCallback callback, object state);
member this.BeginSendFile : string * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, callback As AsyncCallback, state As Object) As IAsyncResult
Parâmetros
- fileName
- String
Uma cadeia de caracteres que contém o caminho e o nome do arquivo a ser enviado. Esse parâmetro pode ser null
.
- callback
- AsyncCallback
O delegado AsyncCallback.
- state
- Object
Um objeto que contém informações de estado para essa solicitação.
Retornos
Um objeto IAsyncResult que representa o envio assíncrono.
Exceções
O objeto Socket foi fechado.
O soquete não está conectado a um host remoto.
O arquivo fileName
não foi encontrado.
.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.
Comentários
Importante
Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin*
e End*
) para novo desenvolvimento. Em vez disso, use os Task
equivalentes baseados em .
Essa sobrecarga envia o arquivo fileName
pelo soquete. 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.
Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSendFile ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSendFile. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true
para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSendFile método .
A BeginSendFile operação deve ser concluída chamando o EndSendFile método . Normalmente, o método é invocado pelo AsyncCallback delegado. EndSendFile bloqueará o thread de chamada até que a operação seja concluída.
Embora pretenda protocolos orientados a conexões, BeginSendFile também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Com protocolos sem conexão, você deve ter certeza de que o tamanho do arquivo não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSendFile gerará uma SocketException exceção.
Observação
Se você receber uma SocketException exceção, use a SocketException.ErrorCode propriedade para obter o código de erro específico.
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.
Observação
O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.
Aplica-se a
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Envia um arquivo e buffers de dados de forma assíncrona para um objeto Socket conectado.
public:
IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult
Parâmetros
- fileName
- String
Uma cadeia de caracteres que contém 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
Um combinação bit a bit dos valores de enumeração.
- callback
- AsyncCallback
Um delegado AsyncCallback a ser invocado quando a operação for concluída. Esse parâmetro pode ser null
.
- state
- Object
Um objeto definido pelo usuário que contém informações de estado para essa solicitação. Esse parâmetro pode ser null
.
Retornos
Um objeto IAsyncResult que representa a operação assíncrona.
Exceções
O objeto Socket foi fechado.
.NET Framework e .NET 5 e somente anteriores: ocorreu um erro ao tentar acessar o soquete. Consulte a seção Comentários abaixo.
O sistema operacional não é o Windows NT ou posterior.
- ou -
O soquete não está conectado a um host remoto.
O arquivo fileName
não foi encontrado.
Comentários
Importante
Essa é uma API de compatibilidade. Não recomendamos usar os métodos APM (Begin*
e End*
) para novo desenvolvimento. Em vez disso, use os Task
equivalentes baseados em .
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 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.
O flags
parâmetro fornece informações adicionais sobre a transferência de arquivo. Para obter mais informações sobre como usar esse parâmetro, consulte TransmitFileOptions.
Você pode passar um retorno de chamada que implementa AsyncCallback para BeginSendFile ser notificado sobre a conclusão da operação. Observe que, se a pilha de rede subjacente concluir a operação de forma síncrona, o retorno de chamada será executado embutido durante a chamada para BeginSendFile. Nesse caso, a CompletedSynchronously propriedade no retornado IAsyncResult será definida como true
para indicar que o método foi concluído de forma síncrona. Use a AsyncState propriedade do IAsyncResult para obter o objeto de estado passado para o BeginSendFile método .
A BeginSendFile operação deve ser concluída chamando o EndSendFile método . Normalmente, o método é invocado pelo delegado fornecido AsyncCallback . EndSendFile bloqueará o thread de chamada até que a operação seja concluída.
Embora pretenda protocolos orientados a conexões, BeginSendFile também funciona para protocolos sem conexão, desde que você primeiro chame o Connect método ou BeginConnect para estabelecer um host remoto padrão. Com protocolos sem conexão, você deve ter certeza de que o tamanho do arquivo não excede o tamanho máximo do pacote do provedor de serviços subjacente. Se isso acontecer, o datagrama não será enviado e BeginSendFile gerará uma SocketException exceção.
Observação
Se você receber uma SocketException exceção, use a SocketException.ErrorCode propriedade para obter o código de erro específico.
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.
Observação
O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket . Após o primeiro uso de um contexto específico (um método assíncrono Socket específico, uma instância específica Socket e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria de desempenho.