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)

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

NamedPipeServerStream(String, PipeDirection)

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

NamedPipeServerStream(String, PipeDirection, Int32)

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

NamedPipeServerStream(String, PipeDirection, Int32, PipeTransmissionMode)

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

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

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

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

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

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

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

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

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

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

Инициализирует новый экземпляр класса 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)

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

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

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

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

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

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

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

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

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

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

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

(Унаследовано от 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)

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

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

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

(Унаследовано от PipeStream)
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)

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

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

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

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

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

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

Выполняет запись байта в текущий поток.

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

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

GetAccessControl(PipeStream)

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

SetAccessControl(PipeStream, PipeSecurity)

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

ConfigureAwait(IAsyncDisposable, Boolean)

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

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