AnonymousPipeServerStream Clase

Definición

Expone una secuencia alrededor de una canalización anónima, que admite operaciones de lectura y escritura tanto sincrónicas como asincrónicas.

public ref class AnonymousPipeServerStream sealed : System::IO::Pipes::PipeStream
public sealed class AnonymousPipeServerStream : System.IO.Pipes.PipeStream
type AnonymousPipeServerStream = class
    inherit PipeStream
Public NotInheritable Class AnonymousPipeServerStream
Inherits PipeStream
Herencia
AnonymousPipeServerStream
Herencia
AnonymousPipeServerStream

Ejemplos

En el ejemplo siguiente se envía una cadena de un proceso primario a un proceso secundario mediante canalizaciones anónimas. En este ejemplo se crea un AnonymousPipeServerStream objeto en un proceso primario con un PipeDirection valor de PipeDirection.Out. También crea un AnonymousPipeClientStream objeto en un proceso secundario con un PipeDirection valor de PipeDirection.In. El proceso primario envía a continuación una cadena proporcionada por usuario al proceso secundario. La cadena se muestra en la consola.

Este ejemplo es para el proceso de servidor, que usa la AnonymousPipeServerStream clase . Para obtener todo el ejemplo de código, incluido el código para el cliente de canalización y el servidor, vea Cómo: Usar canalizaciones anónimas para la comunicación entre procesos locales.

//<snippet01>
#using <System.dll>
#using <System.Core.dll>

using namespace System;
using namespace System::IO;
using namespace System::IO::Pipes;
using namespace System::Diagnostics;

ref class PipeServer
{
public:
    static void Main()
    {
        Process^ pipeClient = gcnew Process();

        pipeClient->StartInfo->FileName = "pipeClient.exe";

        AnonymousPipeServerStream^ pipeServer =
            gcnew AnonymousPipeServerStream(PipeDirection::Out,
            HandleInheritability::Inheritable);

        Console::WriteLine("[SERVER] Current TransmissionMode: {0}.",
            pipeServer->TransmissionMode);

        // Pass the client process a handle to the server.
        pipeClient->StartInfo->Arguments =
            pipeServer->GetClientHandleAsString();
        pipeClient->StartInfo->UseShellExecute = false;
        pipeClient->Start();

        pipeServer->DisposeLocalCopyOfClientHandle();

        try
        {
            // Read user input and send that to the client process.
            StreamWriter^ sw = gcnew StreamWriter(pipeServer);

            sw->AutoFlush = true;
            // Send a 'sync message' and wait for client to receive it.
            sw->WriteLine("SYNC");
            pipeServer->WaitForPipeDrain();
            // Send the console input to the client process.
            Console::Write("[SERVER] Enter text: ");
            sw->WriteLine(Console::ReadLine());
            sw->Close();
        }
        // Catch the IOException that is raised if the pipe is broken
        // or disconnected.
        catch (IOException^ e)
        {
            Console::WriteLine("[SERVER] Error: {0}", e->Message);
        }
        pipeServer->Close();
        pipeClient->WaitForExit();
        pipeClient->Close();
        Console::WriteLine("[SERVER] Client quit. Server terminating.");
    }
};

int main()
{
    PipeServer::Main();
}
//</snippet01>
//<snippet01>
using System;
using System.IO;
using System.IO.Pipes;
using System.Diagnostics;

class PipeServer
{
    static void Main()
    {
        Process pipeClient = new Process();

        pipeClient.StartInfo.FileName = "pipeClient.exe";

        using (AnonymousPipeServerStream pipeServer =
            new AnonymousPipeServerStream(PipeDirection.Out,
            HandleInheritability.Inheritable))
        {
            Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
                pipeServer.TransmissionMode);

            // Pass the client process a handle to the server.
            pipeClient.StartInfo.Arguments =
                pipeServer.GetClientHandleAsString();
            pipeClient.StartInfo.UseShellExecute = false;
            pipeClient.Start();

            pipeServer.DisposeLocalCopyOfClientHandle();

            try
            {
                // Read user input and send that to the client process.
                using (StreamWriter sw = new StreamWriter(pipeServer))
                {
                    sw.AutoFlush = true;
                    // Send a 'sync message' and wait for client to receive it.
                    sw.WriteLine("SYNC");
                    pipeServer.WaitForPipeDrain();
                    // Send the console input to the client process.
                    Console.Write("[SERVER] Enter text: ");
                    sw.WriteLine(Console.ReadLine());
                }
            }
            // Catch the IOException that is raised if the pipe is broken
            // or disconnected.
            catch (IOException e)
            {
                Console.WriteLine("[SERVER] Error: {0}", e.Message);
            }
        }

        pipeClient.WaitForExit();
        pipeClient.Close();
        Console.WriteLine("[SERVER] Client quit. Server terminating.");
    }
}
//</snippet01>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes
Imports System.Diagnostics

Class PipeServer
    Shared Sub Main()
        Dim pipeClient As New Process()

        pipeClient.StartInfo.FileName = "pipeClient.exe"

        Using pipeServer As New AnonymousPipeServerStream(PipeDirection.Out, _
            HandleInheritability.Inheritable)

            Console.WriteLine("[SERVER] Current TransmissionMode: {0}.",
                pipeServer.TransmissionMode)

            ' Pass the client process a handle to the server.
            pipeClient.StartInfo.Arguments = pipeServer.GetClientHandleAsString()
            pipeClient.StartInfo.UseShellExecute = false
            pipeClient.Start()

            pipeServer.DisposeLocalCopyOfClientHandle()

            Try
                ' Read user input and send that to the client process.
                Using sw As New StreamWriter(pipeServer)
                    sw.AutoFlush = true
                    ' Send a 'sync message' and wait for client to receive it.
                    sw.WriteLine("SYNC")
                    pipeServer.WaitForPipeDrain()
                    ' Send the console input to the client process.
                    Console.Write("[SERVER] Enter text: ")
                    sw.WriteLine(Console.ReadLine())
                End Using
            Catch e As IOException
                ' Catch the IOException that is raised if the pipe is broken
                ' or disconnected.
                Console.WriteLine("[SERVER] Error: {0}", e.Message)
            End Try
        End Using

        pipeClient.WaitForExit()
        pipeClient.Close()
        Console.WriteLine("[SERVER] Client quit. Server terminating.")
    End Sub
End Class
'</snippet01>

Comentarios

Las canalizaciones anónimas ayudan a proporcionar una comunicación entre procesos secundarios y primarios seguros y seguros. La AnonymousPipeServerStream clase permite a un proceso primario enviar o recibir información de un proceso secundario.

Las canalizaciones anónimas no tienen nombre, canalizaciones unidireccionales que normalmente transfieren datos entre procesos primarios y secundarios. Las canalizaciones anónimas siempre son locales; no se pueden usar a través de una red. No se admite un PipeDirection valor de InOut porque las canalizaciones anónimas se definen como unidireccionales.

Las canalizaciones anónimas no admiten el PipeTransmissionMode.Message modo de lectura.

El lado cliente de una canalización anónima debe crearse a partir de un identificador de canalización proporcionado por el lado servidor llamando al GetClientHandleAsString método . A continuación, la cadena se pasa como parámetro al crear el proceso de cliente. Desde el proceso de cliente, se pasa al AnonymousPipeClientStream constructor como pipeHandleAsString parámetro .

El AnonymousPipeServerStream objeto debe desechar el identificador de cliente mediante el DisposeLocalCopyOfClientHandle método para recibir una notificación cuando el cliente salga.

Constructores

AnonymousPipeServerStream()

Inicializa una nueva instancia de la clase AnonymousPipeServerStream.

AnonymousPipeServerStream(PipeDirection)

Inicializa una nueva instancia de la clase AnonymousPipeServerStream con la dirección de canalización especificada.

AnonymousPipeServerStream(PipeDirection, HandleInheritability)

Inicializa una nueva instancia de la clase AnonymousPipeServerStream con las características dirección de canalización y modo de herencia especificadas.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32)

Inicializa una nueva instancia de la clase AnonymousPipeServerStream con las características dirección de canalización, modo de herencia y tamaño de búfer especificadas.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity)

Inicializa una nueva instancia de la clase AnonymousPipeServerStream con las características dirección de la canalización, modo de herencia, tamaño de búfer y seguridad de canalización especificadas.

AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle)

Inicializa una nueva instancia de la clase AnonymousPipeServerStream a partir de los identificadores de canalización especificados.

Propiedades

CanRead

Obtiene un valor que indica si la secuencia actual admite operaciones de lectura.

(Heredado de PipeStream)
CanSeek

Obtiene un valor que indica si la secuencia actual admite operaciones de búsqueda.

(Heredado de PipeStream)
CanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.

(Heredado de Stream)
CanWrite

Obtiene un valor que indica si la secuencia actual admite operaciones de escritura.

(Heredado de PipeStream)
ClientSafePipeHandle

Obtiene el identificador seguro del objeto AnonymousPipeClientStream que está conectado actualmente al objeto AnonymousPipeServerStream.

InBufferSize

Obtiene el tamaño en bytes del búfer de entrada de una canalización.

(Heredado de PipeStream)
IsAsync

Obtiene un valor que indica si un objeto PipeStream se abrió de forma sincrónica o asincrónica.

(Heredado de PipeStream)
IsConnected

Obtiene o establece un valor que indica si un objeto PipeStream está conectado.

(Heredado de PipeStream)
IsHandleExposed

Obtiene un valor que indica si se expone un identificador a un objeto PipeStream.

(Heredado de PipeStream)
IsMessageComplete

Obtiene un valor que indica si hay más datos en el mensaje devuelto desde la operación de lectura más reciente.

(Heredado de PipeStream)
Length

Devuelve la longitud en bytes de una secuencia.

(Heredado de PipeStream)
OutBufferSize

Obtiene el tamaño en bytes del búfer de salida de una canalización.

(Heredado de PipeStream)
Position

Obtiene o establece la posición de la secuencia actual.

(Heredado de PipeStream)
ReadMode

Establece el modo de lectura para el objeto AnonymousPipeServerStream. Para las canalizaciones anónimas, el modo de transmisión debe ser Byte.

ReadTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de lectura antes de que se agote el tiempo de espera.

(Heredado de Stream)
SafePipeHandle

Obtiene el identificador seguro del extremo local de la canalización encapsulada por el objeto PipeStream actual.

(Heredado de PipeStream)
TransmissionMode

Obtiene el modo de transmisión de canalización compatible con la canalización actual.

WriteTimeout

Obtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de escritura antes de que se agote el tiempo de espera.

(Heredado de Stream)

Métodos

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

Comienza una operación de lectura asincrónica.

(Heredado de PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica.

(Heredado de PipeStream)
CheckPipePropertyOperations()

Comprueba si la canalización está en el estado apropiado para obtener o establecer las propiedades.

(Heredado de PipeStream)
CheckReadOperations()

Comprueba si la canalización está en estado conectado para las operaciones de lectura.

(Heredado de PipeStream)
CheckWriteOperations()

Comprueba si la canalización está en estado conectado para las operaciones de escritura.

(Heredado de PipeStream)
Close()

Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta. En lugar de llamar a este método, asegúrese de que la secuencia se desecha correctamente.

(Heredado de Stream)
CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyTo(Stream, Int32)

Lee todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un token de cancelación especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados. Ambas posiciones de secuencias están avanzadas por el número de bytes copiados.

(Heredado de Stream)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
CreateWaitHandle()
Obsoletos.
Obsoletos.
Obsoletos.

Asigna un objeto WaitHandle.

(Heredado de Stream)
Dispose()

Libera todos los recursos que usa Stream.

(Heredado de Stream)
Dispose(Boolean)

Libera los recursos no administrados utilizados por la clase PipeStream y, de forma opcional, libera los recursos administrados.

(Heredado de PipeStream)
DisposeAsync()

Libera de forma asincrónica los recursos no administrados usados por Stream.

(Heredado de Stream)
DisposeLocalCopyOfClientHandle()

Cierra la copia local del identificador del objeto AnonymousPipeClientStream.

EndRead(IAsyncResult)

Finaliza una solicitud de lectura asincrónica pendiente.

(Heredado de PipeStream)
EndWrite(IAsyncResult)

Finaliza una solicitud de escritura asincrónica pendiente.

(Heredado de PipeStream)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
Finalize()

Libera recursos no administrados y realiza otras operaciones de limpieza antes de que la recolección de elementos no utilizados reclame la instancia de AnonymousPipeServerStream.

Flush()

Borra el búfer de la secuencia actual y hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente.

(Heredado de PipeStream)
FlushAsync()

Borra asincrónicamente todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.

(Heredado de Stream)
FlushAsync(CancellationToken)

Borra el búfer de la secuencia actual de manera asincrónica y hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente.

(Heredado de PipeStream)
GetAccessControl()

Obtiene un objeto PipeSecurity que encapsula las entradas de la lista de control de acceso (ACL) de la canalización descrita por el objeto PipeStream actual.

(Heredado de PipeStream)
GetClientHandleAsString()

Obtiene el identificador del objeto AnonymousPipeClientStream conectado como una cadena.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

Inicializa un objeto PipeStream a partir del objeto SafePipeHandle especificado.

(Heredado de PipeStream)
InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
ObjectInvariant()
Obsoletos.

Proporciona compatibilidad con una clase Contract.

(Heredado de Stream)
Read(Byte[], Int32, Int32)

Lee un bloque de bytes de una secuencia y escribe los datos en un búfer especificado, a partir de una posición especificada y con una longitud especificada.

(Heredado de PipeStream)
Read(Span<Byte>)

Lee una secuencia de bytes de la secuencia actual, las escribe en una matriz de bytes y avanza la posición dentro de la secuencia el número de bytes leídos.

(Heredado de PipeStream)
ReadAsync(Byte[], Int32, Int32)

Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos.

(Heredado de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica una secuencia de bytes desde la secuencia actual a una matriz de bytes a partir de una posición especificada para un número de bytes especificado, avanza la posición dentro de la secuencia el número de bytes leídos y supervisa las solicitudes de cancelación.

(Heredado de PipeStream)
ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica una secuencia de bytes en la secuencia actual, los escribe en un intervalo de memoria de bytes, avanza la posición dentro de la secuencia el número de bytes leídos y supervisa las solicitudes de cancelación.

(Heredado de PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Lee al menos un número mínimo de bytes de la secuencia actual y avanza la posición dentro de la secuencia por el número de bytes leídos.

(Heredado de Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Lee de forma asincrónica al menos un número mínimo de bytes de la secuencia actual, avanza la posición dentro de la secuencia por el número de bytes leídos y supervisa las solicitudes de cancelación.

(Heredado de Stream)
ReadByte()

Lee un byte de una canalización.

(Heredado de PipeStream)
ReadExactly(Byte[], Int32, Int32)

count Lee el número de bytes de la secuencia actual y avanza la posición dentro de la secuencia.

(Heredado de Stream)
ReadExactly(Span<Byte>)

Lee bytes de la secuencia actual y avanza la posición dentro de la secuencia hasta buffer que se rellena.

(Heredado de Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Lee de forma asincrónica el count número de bytes de la secuencia actual, avanza la posición dentro de la secuencia y supervisa las solicitudes de cancelación.

(Heredado de Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica bytes de la secuencia actual, avanza la posición dentro de la secuencia hasta buffer que se rellena y supervisa las solicitudes de cancelación.

(Heredado de Stream)
Seek(Int64, SeekOrigin)

Establece la posición actual de esta secuencia en el valor especificado.

(Heredado de PipeStream)
SetAccessControl(PipeSecurity)

Aplica las entradas de la lista de control de acceso (ACL) especificadas por un objeto PipeSecurity a la canalización establecida por el objeto PipeStream actual.

(Heredado de PipeStream)
SetLength(Int64)

Establece la longitud de la secuencia actual en el valor especificado.

(Heredado de PipeStream)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
WaitForPipeDrain()

Espera hasta que el otro final de la canalización lea todos los bytes enviados.

(Heredado de PipeStream)
Write(Byte[], Int32, Int32)

Escribe un bloque de bytes en la secuencia actual utilizando los datos de un búfer.

(Heredado de PipeStream)
Write(ReadOnlySpan<Byte>)

Escribe una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos.

(Heredado de PipeStream)
WriteAsync(Byte[], Int32, Int32)

Escribe asincrónicamente una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos.

(Heredado de Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Escribe de forma asincrónica un número especificado de bytes en una matriz de bytes a partir de una posición especificada, avanza la posición actual dentro de esta secuencia el número de bytes escritos y supervisa las solicitudes de cancelación.

(Heredado de PipeStream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.

(Heredado de PipeStream)
WriteByte(Byte)

Escribe un byte en la secuencia actual.

(Heredado de PipeStream)

Métodos de extensión

CopyToAsync(Stream, PipeWriter, CancellationToken)

Lee de forma asincrónica los bytes de Stream y los escribe en el elemento PipeWriter especificado, mediante un token de cancelación.

GetAccessControl(PipeStream)

Devuelve la información de seguridad de un flujo de canalización.

SetAccessControl(PipeStream, PipeSecurity)

Cambia los atributos de seguridad de un flujo de canalización existente.

ConfigureAwait(IAsyncDisposable, Boolean)

Configura la forma en la que se realizan las expresiones await en las tareas devueltas desde un elemento asincrónico descartable.

Se aplica a