NamedPipeServerStream Класс

Определение

Stream Предоставляет вокруг именованного канала, поддерживая синхронные и асинхронные операции чтения и записи.

public ref class NamedPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class NamedPipeServerStream : System.IO.Pipes.PipeStream
type NamedPipeServerStream = class
    inherit PipeStream
Public NotInheritable Class NamedPipeServerStream
Inherits PipeStream
Наследование
NamedPipeServerStream
Наследование
NamedPipeServerStream

Примеры

В следующем примере показано, как отправить строку из родительского процесса в дочерний процесс на том же компьютере с помощью именованных каналов. В этом примере создается NamedPipeServerStream объект в родительском процессе со значением PipeDirectionOut. Затем сервер ожидает, пока NamedPipeClientStream объект в дочернем процессе будет подключен к нему. В этом примере оба процесса находятся на одном компьютере, а NamedPipeClientStream объект имеет PipeDirection значение In. Затем родительский процесс отправляет в дочерний процесс строку, предоставленную пользователем. Строка отображается в консоли.

В этом примере используется серверный процесс, который использует NamedPipeServerStream класс. Полный пример кода, включая код для клиента и сервера канала, см. в разделе "Практическое руководство. Использование именованных каналов для взаимодействия между сетями".

using System;
using System.IO;
using System.IO.Pipes;

class PipeServer
{
    static void Main()
    {
        using (NamedPipeServerStream pipeServer =
            new NamedPipeServerStream("testpipe", PipeDirection.Out))
        {
            Console.WriteLine("NamedPipeServerStream object created.");

            // Wait for a client to connect
            Console.Write("Waiting for client connection...");
            pipeServer.WaitForConnection();

            Console.WriteLine("Client connected.");
            try
            {
                // Read user input and send that to the client process.
                using (StreamWriter sw = new StreamWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    Console.Write("Enter text: ");
                    sw.WriteLine(Console.ReadLine());
                }
            }
            // Catch the IOException that is raised if the pipe is broken
            // or disconnected.
            catch (IOException e)
            {
                Console.WriteLine("ERROR: {0}", e.Message);
            }
        }
    }
}
Imports System.IO
Imports System.IO.Pipes

Class PipeServer

    Shared Sub Main()
        Dim pipeServer As New NamedPipeServerStream("testpipe", PipeDirection.Out)

        Console.WriteLine("NamedPipeServerStream object created.")

        ' Wait for a client to connect
        Console.Write("Waiting for a client connection...")
        pipeServer.WaitForConnection()

        Console.WriteLine("Client connected.")
        Try
            'Read user input and send that to the client process.
            Dim sw As New StreamWriter(pipeServer)
            sw.AutoFlush = True
            Console.Write("Enter Text: ")
            sw.WriteLine(Console.ReadLine())
        Catch ex As IOException
            ' Catch the IOException that is raised if the pipe is broken
            ' or disconnected
            Console.WriteLine("ERROR: {0}", ex.Message)
        End Try
    End Sub
End Class

Комментарии

Именованные каналы предоставляют односторонние или дуплексные каналы для обмена данными между сервером каналов и одним или несколькими клиентами каналов. Именованные каналы можно использовать для взаимодействия между процессами локально или по сети. Имя одного канала может совместно использоваться несколькими NamedPipeClientStream объектами.

Любой процесс может выступать в качестве именованного сервера канала или клиента или обоих.

Что касается безопасности потоков для чтения и записи, вплоть до одного средства чтения и одного модуля записи можно одновременно использовать экземпляр.

Конструкторы

Имя Описание
NamedPipeServerStream(PipeDirection, Boolean, Boolean, SafePipeHandle)

Инициализирует новый экземпляр класса из указанного NamedPipeServerStream дескриптора канала.

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability, PipeAccessRights)

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

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity, HandleInheritability)

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

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32, PipeSecurity)

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

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions, Int32, Int32)

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

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode, PipeOptions)

Инициализирует новый экземпляр NamedPipeServerStream класса с указанным именем канала, направлением канала, максимальным количеством экземпляров сервера, режимом передачи и параметрами канала.

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode)

Инициализирует новый экземпляр NamedPipeServerStream класса с указанным именем канала, направлением канала, максимальным количеством экземпляров сервера и режимом передачи.

NamedPipeServerStream(String, PipeDirection, Int32)

Инициализирует новый экземпляр NamedPipeServerStream класса с указанным именем канала, направлением канала и максимальным количеством экземпляров сервера.

NamedPipeServerStream(String, PipeDirection)

Инициализирует новый экземпляр NamedPipeServerStream класса с указанным именем канала и направлением канала.

NamedPipeServerStream(String)

Инициализирует новый экземпляр NamedPipeServerStream класса с указанным именем канала.

Поля

Имя Описание
MaxAllowedServerInstances

Представляет максимальное количество экземпляров сервера, разрешенных системными ресурсами.

Свойства

Имя Описание
CanRead

Возвращает значение, указывающее, поддерживает ли текущий поток операции чтения.

(Унаследовано от PipeStream)
CanSeek

Возвращает значение, указывающее, поддерживает ли текущий поток операции поиска.

(Унаследовано от PipeStream)
CanTimeout

Возвращает значение, определяющее, может ли текущий поток истекает время ожидания.

(Унаследовано от Stream)
CanWrite

Возвращает значение, указывающее, поддерживает ли текущий поток операции записи.

(Унаследовано от PipeStream)
InBufferSize

Возвращает размер в байтах входящего буфера для канала.

(Унаследовано от PipeStream)
IsAsync

Возвращает значение, указывающее, был ли PipeStream объект открыт асинхронно или синхронно.

(Унаследовано от PipeStream)
IsConnected

Возвращает или задает значение, указывающее, подключен ли PipeStream объект.

(Унаследовано от PipeStream)
IsHandleExposed

Возвращает значение, указывающее, предоставляется ли дескриптор PipeStream объекту.

(Унаследовано от PipeStream)
IsMessageComplete

Возвращает значение, указывающее, есть ли в сообщении больше данных, возвращаемых из последней операции чтения.

(Унаследовано от PipeStream)
Length

Возвращает длину потока в байтах.

(Унаследовано от PipeStream)
OutBufferSize

Возвращает размер в байтах исходящего буфера для канала.

(Унаследовано от PipeStream)
Position

Возвращает или задает текущее положение текущего потока.

(Унаследовано от PipeStream)
ReadMode

Возвращает или задает режим чтения для PipeStream объекта.

(Унаследовано от PipeStream)
ReadTimeout

Возвращает или задает значение в миллисекундах, которое определяет, сколько времени поток попытается прочитать до истечения времени ожидания.

(Унаследовано от Stream)
SafePipeHandle

Возвращает безопасный дескриптор для локального конца канала, который инкапсулирует текущий PipeStream объект.

(Унаследовано от PipeStream)
TransmissionMode

Возвращает режим передачи канала, поддерживаемый текущим каналом.

(Унаследовано от PipeStream)
WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее, сколько времени поток попытается записать до истечения времени ожидания.

(Унаследовано от Stream)

Методы

Имя Описание
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает асинхронную операцию чтения.

(Унаследовано от PipeStream)
BeginWaitForConnection(AsyncCallback, Object)

Начинает асинхронную операцию ожидания подключения клиента.

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает асинхронную операцию записи.

(Унаследовано от PipeStream)
CheckPipePropertyOperations()

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

(Унаследовано от PipeStream)
CheckReadOperations()

Проверяет, находится ли канал в подключенном состоянии для операций чтения.

(Унаследовано от PipeStream)
CheckWriteOperations()

Проверяет, находится ли канал в подключенном состоянии для операций записи.

(Унаследовано от PipeStream)
Close()

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

(Унаследовано от Stream)
CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток с помощью указанного маркера отмены. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и маркер отмены. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CopyToAsync(Stream)

Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

(Унаследовано от Stream)
CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()
Устаревшие.
Устаревшие.
Устаревшие.

Выделяет объект WaitHandle.

(Унаследовано от Stream)
Disconnect()

Отключает текущее подключение.

Dispose()

Освобождает все ресурсы, используемые параметром Stream.

(Унаследовано от Stream)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые классом PipeStream , и при необходимости освобождает управляемые ресурсы.

(Унаследовано от PipeStream)
DisposeAsync()

Асинхронно освобождает неуправляемые ресурсы, используемые Streamв .

(Унаследовано от Stream)
EndRead(IAsyncResult)

Завершает ожидающий асинхронный запрос на чтение.

(Унаследовано от PipeStream)
EndWaitForConnection(IAsyncResult)

Завершает асинхронную операцию ожидания подключения клиента.

EndWrite(IAsyncResult)

Завершает ожидающий асинхронный запрос на запись.

(Унаследовано от PipeStream)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Finalize()

Освобождает неуправляемые ресурсы и выполняет другие операции очистки перед NamedPipeServerStream восстановлением экземпляра сборкой мусора.

Flush()

Очищает буфер для текущего потока и приводит к записи буферных данных на базовое устройство.

(Унаследовано от PipeStream)
FlushAsync()

Асинхронно очищает все буферы для этого потока и приводит к записи всех буферных данных на базовое устройство.

(Унаследовано от Stream)
FlushAsync(CancellationToken)

Асинхронно очищает буфер для текущего потока и приводит к записи буферных данных на базовое устройство.

(Унаследовано от PipeStream)
GetAccessControl()

PipeSecurity Возвращает объект, инкапсулирующий записи списка управления доступом (ACL) для канала, описанного текущим PipeStream объектом.

(Унаследовано от PipeStream)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetImpersonationUserName()

Возвращает имя пользователя клиента в другом конце канала.

GetLifetimeService()
Устаревшие.

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

Инициализирует PipeStream объект из указанного SafePipeHandle объекта.

(Унаследовано от PipeStream)
InitializeLifetimeService()
Устаревшие.

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()
Устаревшие.

Предоставляет поддержку Contract.

(Унаследовано от Stream)
Read(Byte[], Int32, Int32)

Считывает блок байтов из потока и записывает данные в указанный буфер, начиная с указанной позиции для указанной длины.

(Унаследовано от PipeStream)
Read(Span<Byte>)

Считывает последовательность байтов из текущего потока, записывает их в массив байтов и перемещает позицию в потоке по количеству байтов, считываемых.

(Унаследовано от PipeStream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока в массив байтов, начиная с указанного числа байтов, перемещает позицию в потоке по числу операций чтения байтов и отслеживает запросы на отмену.

(Унаследовано от PipeStream)
ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов.

(Унаследовано от Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, записывает их в диапазон памяти байтов, перемещает позицию в потоке по количеству байтов, считываемых и отслеживает запросы на отмену.

(Унаследовано от PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Считывает по крайней мере минимальное количество байтов из текущего потока и перемещает положение в потоке по количеству байтов, считываемых.

(Унаследовано от Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Асинхронно считывает по крайней мере минимальное количество байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadByte()

Считывает байт из канала.

(Унаследовано от PipeStream)
ReadExactly(Byte[], Int32, Int32)

Считывает количество байтов из текущего потока и перемещает count положение в потоке.

(Унаследовано от Stream)
ReadExactly(Span<Byte>)

Считывает байты из текущего потока и перемещает положение в потоке, пока не будет заполнено buffer .

(Унаследовано от Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает количество байтов из текущего потока, перемещает count положение в потоке и отслеживает запросы на отмену.

(Унаследовано от Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает байты из текущего потока, перемещает положение в потоке до тех пор, пока не buffer будет заполнено, и отслеживает запросы на отмену.

(Унаследовано от Stream)
RunAsClient(PipeStreamImpersonationWorker)

Вызывает делегат во время олицетворения клиента.

Seek(Int64, SeekOrigin)

Задает текущее положение текущего потока указанным значением.

(Унаследовано от PipeStream)
SetAccessControl(PipeSecurity)

Применяет записи списка управления доступом (ACL), указанные объектом, к каналу, указанному PipeSecurity текущим PipeStream объектом.

(Унаследовано от PipeStream)
SetLength(Int64)

Задает длину текущего потока заданному значению.

(Унаследовано от PipeStream)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
WaitForConnection()

Ожидает подключения клиента к этому NamedPipeServerStream объекту.

WaitForConnectionAsync()

Асинхронно ожидает подключения клиента к этому NamedPipeServerStream объекту.

WaitForConnectionAsync(CancellationToken)

Асинхронно ожидает подключения клиента к этому NamedPipeServerStream объекту и отслеживает запросы на отмену.

WaitForPipeDrain()

Ожидает, пока другой конец канала будет считывать все отправленные байты.

(Унаследовано от PipeStream)
Write(Byte[], Int32, Int32)

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

(Унаследовано от PipeStream)
Write(ReadOnlySpan<Byte>)

Записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

(Унаследовано от PipeStream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает указанное число байтов из массива байтов, начиная с указанной позиции, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

(Унаследовано от PipeStream)
WriteAsync(Byte[], Int32, Int32)

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

(Унаследовано от Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

(Унаследовано от PipeStream)
WriteByte(Byte)

Записывает байт в текущий поток.

(Унаследовано от PipeStream)

Методы расширения

Имя Описание
ConfigureAwait(IAsyncDisposable, Boolean)

Настраивает способ ожидания задач, возвращаемых из асинхронного удаления.

CopyToAsync(Stream, PipeWriter, CancellationToken)

Асинхронно считывает байты из Stream указанных и записывает их в указанный PipeWriterмаркер отмены.

GetAccessControl(PipeStream)

Возвращает сведения о безопасности потока канала.

SetAccessControl(PipeStream, PipeSecurity)

Изменяет атрибуты безопасности существующего потока канала.

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