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 объект в родительском процессе со значением 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) |
Считывает |
ReadExactly(Span<Byte>) |
Считывает байты из текущего потока и перемещает позицию в потоке |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Асинхронно считывает |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Асинхронно считывает байты из текущего потока, перемещает позицию в потоке |
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) |
Настраивает способ выполнения ожиданий для задач, возвращаемых из асинхронного высвобождаемого объекта. |
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по