AnonymousPipeServerStream Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Expose un flux autour d’un canal anonyme, qui prend en charge les opérations de lecture et d’écriture synchrones et asynchrones.
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
- Héritage
- Héritage
Exemples
L’exemple suivant envoie une chaîne d’un processus parent à un processus enfant à l’aide de canaux anonymes. Cet exemple crée un AnonymousPipeServerStream objet dans un processus parent avec une PipeDirection valeur de PipeDirection.Out. Il crée également un AnonymousPipeClientStream objet dans un processus enfant avec une PipeDirection valeur de PipeDirection.In. Le processus parent envoie ensuite une chaîne fournie par l’utilisateur au processus enfant. La chaîne s’affiche dans la console.
Cet exemple concerne le processus serveur, qui utilise la AnonymousPipeServerStream classe. Pour l’exemple de code entier, y compris le code du client de canal et du serveur, consultez Comment : utiliser des canaux anonymes pour la communication interprocesseur locale.
//<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>
Remarques
Les canaux anonymes permettent de fournir une communication interprocesseur sécurisée et sécurisée entre les processus enfants et parents. La AnonymousPipeServerStream classe permet à un processus parent d’envoyer ou de recevoir des informations d’un processus enfant.
Les canaux anonymes sont des canaux non nommés et unidirectionnel qui transfèrent généralement des données entre les processus parent et enfant. Les canaux anonymes sont toujours locaux ; ils ne peuvent pas être utilisés sur un réseau. La PipeDirection valeur n’est InOut pas prise en charge, car les canaux anonymes sont définis de manière unidirectionnel.
Les canaux anonymes ne prennent pas en charge le PipeTransmissionMode.Message mode lecture.
Le côté client d’un canal anonyme doit être créé à partir d’un handle de canal fourni par le serveur en appelant la GetClientHandleAsString méthode. La chaîne est ensuite passée en tant que paramètre lors de la création du processus client. À partir du processus client, il est ensuite passé au AnonymousPipeClientStream constructeur en tant que pipeHandleAsString paramètre.
L’objet AnonymousPipeServerStream doit supprimer le handle client à l’aide de la DisposeLocalCopyOfClientHandle méthode pour être averti lorsque le client se ferme.
Constructeurs
| Nom | Description |
|---|---|
| AnonymousPipeServerStream() |
Initialise une nouvelle instance de la classe AnonymousPipeServerStream. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Initialise une nouvelle instance de la AnonymousPipeServerStream classe avec le sens du canal, le mode d’héritage, la taille de la mémoire tampon et la sécurité du canal spécifiés. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Initialise une nouvelle instance de la AnonymousPipeServerStream classe avec le sens du canal, le mode d’héritage et la taille de mémoire tampon spécifiés. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Initialise une nouvelle instance de la AnonymousPipeServerStream classe avec le sens du canal et le mode d’héritage spécifiés. |
| AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Initialise une nouvelle instance de la AnonymousPipeServerStream classe à partir des handles de canal spécifiés. |
| AnonymousPipeServerStream(PipeDirection) |
Initialise une nouvelle instance de la AnonymousPipeServerStream classe avec le sens de canal spécifié. |
Propriétés
| Nom | Description |
|---|---|
| CanRead |
Obtient une valeur indiquant si le flux actuel prend en charge les opérations de lecture. (Hérité de PipeStream) |
| CanSeek |
Obtient une valeur indiquant si le flux actuel prend en charge les opérations de recherche. (Hérité de PipeStream) |
| CanTimeout |
Obtient une valeur qui détermine si le flux actuel peut expirer. (Hérité de Stream) |
| CanWrite |
Obtient une valeur indiquant si le flux actuel prend en charge les opérations d’écriture. (Hérité de PipeStream) |
| ClientSafePipeHandle |
Obtient le handle sécurisé de l’objet AnonymousPipeClientStream actuellement connecté à l’objet AnonymousPipeServerStream . |
| InBufferSize |
Obtient la taille, en octets, de la mémoire tampon entrante pour un canal. (Hérité de PipeStream) |
| IsAsync |
Obtient une valeur indiquant si un PipeStream objet a été ouvert de manière asynchrone ou synchrone. (Hérité de PipeStream) |
| IsConnected |
Obtient ou définit une valeur indiquant si un PipeStream objet est connecté. (Hérité de PipeStream) |
| IsHandleExposed |
Obtient une valeur indiquant si un handle à un PipeStream objet est exposé. (Hérité de PipeStream) |
| IsMessageComplete |
Obtient une valeur indiquant s’il existe plus de données dans le message retourné par l’opération de lecture la plus récente. (Hérité de PipeStream) |
| Length |
Obtient la longueur d’un flux, en octets. (Hérité de PipeStream) |
| OutBufferSize |
Obtient la taille, en octets, de la mémoire tampon sortante d’un canal. (Hérité de PipeStream) |
| Position |
Obtient ou définit la position actuelle du flux actuel. (Hérité de PipeStream) |
| ReadMode |
Définit le mode de lecture de l’objet AnonymousPipeServerStream . Pour les canaux anonymes, le mode de transmission doit être Byte. |
| ReadTimeout |
Obtient ou définit une valeur, en millisecondes, qui détermine la durée pendant laquelle le flux tente de lire avant l’expiration du délai d’attente. (Hérité de Stream) |
| SafePipeHandle |
Obtient le handle sécurisé pour la fin locale du canal encapsulé par l’objet actuel PipeStream . (Hérité de PipeStream) |
| TransmissionMode |
Obtient le mode de transmission de canal pris en charge par le canal actuel. |
| WriteTimeout |
Obtient ou définit une valeur, en millisecondes, qui détermine la durée pendant laquelle le flux tentera d’écrire avant l’expiration du délai d’attente. (Hérité de Stream) |
Méthodes
| Nom | Description |
|---|---|
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Commence une opération de lecture asynchrone. (Hérité de PipeStream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Commence une opération d’écriture asynchrone. (Hérité de PipeStream) |
| CheckPipePropertyOperations() |
Vérifie que le canal est dans un état approprié pour obtenir ou définir des propriétés. (Hérité de PipeStream) |
| CheckReadOperations() |
Vérifie que le canal est dans un état connecté pour les opérations de lecture. (Hérité de PipeStream) |
| CheckWriteOperations() |
Vérifie que le canal est dans un état connecté pour les opérations d’écriture. (Hérité de PipeStream) |
| Close() |
Ferme le flux actuel et libère toutes les ressources (telles que les sockets et les handles de fichiers) associées au flux actuel. Au lieu d’appeler cette méthode, vérifiez que le flux est correctement supprimé. (Hérité de Stream) |
| CopyTo(Stream, Int32) |
Lit les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon spécifiée. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CopyTo(Stream) |
Lit les octets du flux actuel et les écrit dans un autre flux. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CopyToAsync(Stream, CancellationToken) |
Lit de manière asynchrone les octets du flux actuel et les écrit dans un autre flux à l’aide d’un jeton d’annulation spécifié. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Lit de manière asynchrone les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon et d’un jeton d’annulation spécifiés. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CopyToAsync(Stream, Int32) |
Lit de façon asynchrone les octets du flux actuel et les écrit dans un autre flux à l’aide d’une taille de mémoire tampon spécifiée. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CopyToAsync(Stream) |
Lit de manière asynchrone les octets du flux actuel et les écrit dans un autre flux. Les deux positions de flux sont avancées par le nombre d’octets copiés. (Hérité de Stream) |
| CreateObjRef(Type) |
Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant. (Hérité de MarshalByRefObject) |
| CreateWaitHandle() |
Obsolète.
Obsolète.
Obsolète.
Alloue un WaitHandle objet. (Hérité de Stream) |
| Dispose() |
Libère toutes les ressources utilisées par le Stream. (Hérité de Stream) |
| Dispose(Boolean) |
Libère les ressources non managées utilisées par la PipeStream classe et libère éventuellement les ressources managées. (Hérité de PipeStream) |
| DisposeAsync() |
Libère de façon asynchrone les ressources non managées utilisées par le Stream. (Hérité de Stream) |
| DisposeLocalCopyOfClientHandle() |
Ferme la copie locale du handle de l’objet AnonymousPipeClientStream . |
| EndRead(IAsyncResult) |
Termine une demande de lecture asynchrone en attente. (Hérité de PipeStream) |
| EndWrite(IAsyncResult) |
Termine une demande d’écriture asynchrone en attente. (Hérité de PipeStream) |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| Finalize() |
Libère des ressources non managées et effectue d’autres opérations de nettoyage avant la récupération de l’instance AnonymousPipeServerStream par le garbage collection. |
| Flush() |
Efface la mémoire tampon du flux actuel et entraîne l’écriture de toutes les données mises en mémoire tampon sur l’appareil sous-jacent. (Hérité de PipeStream) |
| FlushAsync() |
Efface de façon asynchrone toutes les mémoires tampons de ce flux et entraîne l’écriture de toutes les données mises en mémoire tampon sur l’appareil sous-jacent. (Hérité de Stream) |
| FlushAsync(CancellationToken) |
Efface de façon asynchrone la mémoire tampon du flux actuel et entraîne l’écriture de toutes les données mises en mémoire tampon sur l’appareil sous-jacent. (Hérité de PipeStream) |
| GetAccessControl() |
Obtient un PipeSecurity objet qui encapsule les entrées de liste de contrôle d’accès (ACL) pour le canal décrit par l’objet actif PipeStream . (Hérité de PipeStream) |
| GetClientHandleAsString() |
Obtient le handle de l’objet connecté AnonymousPipeClientStream sous forme de chaîne. |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetLifetimeService() |
Obsolète.
Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Initialise un PipeStream objet à partir de l’objet spécifié SafePipeHandle . (Hérité de PipeStream) |
| InitializeLifetimeService() |
Obsolète.
Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| MemberwiseClone(Boolean) |
Crée une copie superficielle de l’objet actuel MarshalByRefObject . (Hérité de MarshalByRefObject) |
| ObjectInvariant() |
Obsolète.
Fournit la prise en charge d’un Contract. (Hérité de Stream) |
| Read(Byte[], Int32, Int32) |
Lit un bloc d’octets d’un flux et écrit les données dans une mémoire tampon spécifiée à partir d’une position spécifiée pour une longueur spécifiée. (Hérité de PipeStream) |
| Read(Span<Byte>) |
Lit une séquence d’octets du flux actuel, les écrit dans un tableau d’octets et avance la position dans le flux par le nombre d’octets lus. (Hérité de PipeStream) |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Lit de façon asynchrone une séquence d’octets du flux actuel vers un tableau d’octets à partir d’une position spécifiée pour un nombre spécifié d’octets, avance la position dans le flux par le nombre d’octets lus et surveille les demandes d’annulation. (Hérité de PipeStream) |
| ReadAsync(Byte[], Int32, Int32) |
Lit de façon asynchrone une séquence d’octets à partir du flux actuel et avance la position dans le flux en fonction du nombre d’octets lus. (Hérité de Stream) |
| ReadAsync(Memory<Byte>, CancellationToken) |
Lit de façon asynchrone une séquence d’octets du flux actuel, les écrit dans une plage de mémoire d’octets, avance la position dans le flux par le nombre d’octets lus et surveille les demandes d’annulation. (Hérité de PipeStream) |
| ReadAtLeast(Span<Byte>, Int32, Boolean) |
Lit au moins un nombre minimal d’octets du flux actuel et avance la position dans le flux par le nombre d’octets lus. (Hérité de Stream) |
| ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Lit de façon asynchrone au moins un nombre minimal d’octets à partir du flux actuel, avance la position dans le flux par le nombre d’octets lus et surveille les demandes d’annulation. (Hérité de Stream) |
| ReadByte() |
Lit un octet à partir d’un canal. (Hérité de PipeStream) |
| ReadExactly(Byte[], Int32, Int32) |
Lit le nombre d’octets |
| ReadExactly(Span<Byte>) |
Lit les octets du flux actuel et avance la position dans le flux jusqu’à ce que le |
| ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Lit de façon asynchrone le nombre d’octets |
| ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Lit de façon asynchrone les octets du flux actuel, avance la position dans le flux jusqu’à ce que le |
| Seek(Int64, SeekOrigin) |
Définit la position actuelle du flux actuel sur la valeur spécifiée. (Hérité de PipeStream) |
| SetAccessControl(PipeSecurity) |
Applique les entrées de liste de contrôle d’accès spécifiées par un PipeSecurity objet au canal spécifié par l’objet actif PipeStream . (Hérité de PipeStream) |
| SetLength(Int64) |
Définit la longueur du flux actuel sur la valeur spécifiée. (Hérité de PipeStream) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
| WaitForPipeDrain() |
Attend que l’autre extrémité du canal lit tous les octets envoyés. (Hérité de PipeStream) |
| Write(Byte[], Int32, Int32) |
Écrit un bloc d’octets dans le flux actuel à l’aide de données d’une mémoire tampon. (Hérité de PipeStream) |
| Write(ReadOnlySpan<Byte>) |
Écrit une séquence d’octets dans le flux actuel et avance la position actuelle dans ce flux par le nombre d’octets écrits. (Hérité de PipeStream) |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Écrit de façon asynchrone un nombre spécifié d’octets à partir d’un tableau d’octets à partir d’une position spécifiée, avance la position actuelle dans ce flux par le nombre d’octets écrits et surveille les demandes d’annulation. (Hérité de PipeStream) |
| WriteAsync(Byte[], Int32, Int32) |
Écrit de façon asynchrone une séquence d’octets dans le flux actuel et avance la position actuelle dans ce flux par le nombre d’octets écrits. (Hérité de Stream) |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Écrit de façon asynchrone une séquence d’octets dans le flux actuel, avance la position actuelle dans ce flux par le nombre d’octets écrits et surveille les demandes d’annulation. (Hérité de PipeStream) |
| WriteByte(Byte) |
Écrit un octet dans le flux actuel. (Hérité de PipeStream) |
Méthodes d’extension
| Nom | Description |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Configure la façon dont les attentes sur les tâches retournées à partir d’un jetable asynchrone sont effectuées. |
| CopyToAsync(Stream, PipeWriter, CancellationToken) |
Lit de façon asynchrone les octets des Stream octets et les écrit dans le jeton d’annulation spécifié PipeWriter. |
| GetAccessControl(PipeStream) |
Retourne les informations de sécurité d’un flux de canal. |
| SetAccessControl(PipeStream, PipeSecurity) |
Modifie les attributs de sécurité d’un flux de canal existant. |