TransmitFileOptions Перечисление

Определение

Перечисление TransmitFileOptions определяет значения, используемые в запросах на передачу файлов.

Это перечисление поддерживает побитовую комбинацию значений его членов.

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

Поля

Имя Значение Описание
UseDefaultWorkerThread 0

Используйте поток по умолчанию для обработки длинных запросов на передачу файлов.

Disconnect 1

Запустите отключение уровня транспорта после того, как все данные файла были помещены в очередь для передачи. При использовании с ReuseSocketэтими флагами эти флаги возвращают сокет в отключенное, повторно используемое состояние после передачи файла.

ReuseSocket 2

Дескриптор сокета может использоваться повторно при завершении запроса. Этот флаг действителен только в том случае, если Disconnect он также указан. При использовании с Disconnectэтими флагами эти флаги возвращают сокет в отключенное, повторно используемое состояние после передачи файла.

WriteBehind 4

Немедленно завершите запрос на передачу файлов без ожидания. Если этот флаг указан и передача файлов выполнена успешно, данные были приняты системой, но не обязательно подтверждены удаленным конце. Не используйте этот флаг с Disconnect флагами и ReuseSocket флагами.

UseSystemThread 16

Используйте системные потоки для обработки длинных запросов на передачу файлов.

UseKernelApc 32

Используйте вызовы асинхронной процедуры ядра вместо рабочих потоков для обработки длинных запросов на передачу файлов. Длинные запросы определяются как запросы, требующие более одного чтения из файла или кэша; Таким образом, запрос зависит от размера файла и указанной длины пакета отправки.

Примеры

В следующем примере показано использование TransmitFileOptions в вызове Socket.SendFile. Файл "test.txt" находится в корневом каталоге локального компьютера. В этом примере создается пребаффер и postbuffer данных и отправляется на удаленный узел с файлом. Чтобы использовать поток по умолчанию системы, UseDefaultWorkerThread указывается.

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

Комментарии

Note

Флаги Disconnect и ReuseSocket возврат сокета в отключенное, повторное использование состояния после передачи файла. Эти флаги не следует использовать в сокете, где запрашивается качество обслуживания (QOS), так как поставщик услуг может немедленно удалить любое качество обслуживания, связанное с сокетом, до завершения передачи файлов. Лучший подход к сокету с поддержкой QOS — вызывать Socket.Close при завершении передачи файлов, а не полагаться на эти флаги.

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