TransmitFileOptions TransmitFileOptions TransmitFileOptions TransmitFileOptions Enum

Определение

Перечисление TransmitFileOptions определяет значения, используемые в запросах на передачу файлов.The TransmitFileOptions enumeration defines values used in file transfer requests.

Это перечисление имеет атрибут FlagsAttribute, который разрешает побитовое сочетание значений его элементов.

public enum class TransmitFileOptions
[System.Flags]
public enum TransmitFileOptions
type TransmitFileOptions = 
Public Enum TransmitFileOptions
Наследование
TransmitFileOptionsTransmitFileOptionsTransmitFileOptionsTransmitFileOptions
Атрибуты

Поля

Disconnect Disconnect Disconnect Disconnect 1

Запустить отключение уровня транспорта, после того как все данные файла поставлены в очередь на передачу.Start a transport-level disconnect after all the file data has been queued for transmission. При использовании вместе с флагом ReuseSocket эти флаги возвращают сокет в отключенное состояние для повторного использования после передачи файла.When used with ReuseSocket, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

ReuseSocket ReuseSocket ReuseSocket ReuseSocket 2

После выполнения запроса дескриптор сокета можно использовать повторно.The socket handle may be reused when the request completes. Этот флаг допустим, только если также указан флаг Disconnect.This flag is valid only if Disconnect is also specified. При использовании вместе с флагом Disconnect эти флаги возвращают сокет в отключенное состояние для повторного использования после передачи файла.When used with Disconnect, these flags return the socket to a disconnected, reusable state after the file has been transmitted.

UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread UseDefaultWorkerThread 0

Использовать для обработки длительных запросов передачи файлов поток по умолчанию.Use the default thread to process long file transfer requests.

UseKernelApc UseKernelApc UseKernelApc UseKernelApc 32

Использовать для обработки длительных запросов передачи файлов асинхронные вызовы процедур ядра, а не рабочие потоки.Use kernel asynchronous procedure calls (APCs) instead of worker threads to process long file transfer requests. Длительные запросы — это запросы, которые требуют более одного чтения из файла или из кэша, поэтому продолжительность выполнения такого запроса зависит от размера файла и указанной длины отправляемого пакета.Long requests are defined as requests that require more than a single read from the file or a cache; the request therefore depends on the size of the file and the specified length of the send packet.

UseSystemThread UseSystemThread UseSystemThread UseSystemThread 16

Использовать для обработки длительных запросов передачи файлов системные потоки.Use system threads to process long file transfer requests.

WriteBehind WriteBehind WriteBehind WriteBehind 4

Выполнить запрос на передачу файла немедленно, не откладывая его выполнения.Complete the file transfer request immediately, without pending. Если этот флаг указан и передача файлов завершается успешно, значит данные приняты системой, но не обязательно получено подтверждение на удаленном конце.If this flag is specified and the file transfer succeeds, the data has been accepted by the system but not necessarily acknowledged by the remote end. Не используйте этот флаг с флагами Disconnect и ReuseSocket.Do not use this flag with the Disconnect and ReuseSocket flags.

Примеры

В следующем примере показано использование TransmitFileOptions в Socket.SendFileвызове метода.The following example demonstrates the use of TransmitFileOptions in a call to Socket.SendFile. Файл Test. txt находится в корневом каталоге локального компьютера.The file "test.txt" is located in the root directory of the local machine. В этом примере создается и отправляется на удаленный узел с помощью файла с предбуферной и буферной буферизацией.In this example, a prebuffer and postbuffer of data are created and sent to the remote host with the file. Чтобы использовать поток по умолчанию для системы UseDefaultWorkerThread , задается.To use the system's default thread, UseDefaultWorkerThread is specified.

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

Комментарии

Примечание

Флаги Disconnect и ReuseSocket возвращают сокет в отключенное, повторно используемое состояние после передачи файла.The flags Disconnect and ReuseSocket return the socket to a disconnected, reusable state after the file has been transmitted. Эти флаги не следует использовать на сокете, где запрошено качество обслуживания (QOS), так как поставщик услуг может сразу же удалить любое качество обслуживания, связанное с сокетом, до завершения передачи файла.These flags should not be used on a socket where quality of service (QOS) has been requested, because the service provider might immediately delete any quality of service associated with the socket before the file transfer has completed. Лучшим подходом к сокету с поддержкой QoS является вызов Socket.Close по завершении обмена файлами, а не полагаться на эти флаги.The best approach for a QOS-enabled socket is to call Socket.Close when the file transfer has completed, rather than relying on these flags.

Применяется к