AnonymousPipeServerStream Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een stroom rond een anonieme pijp weergegeven, die zowel synchrone als asynchrone lees- en schrijfbewerkingen ondersteunt.
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
- Overname
- Overname
Voorbeelden
In het volgende voorbeeld wordt een tekenreeks van een bovenliggend proces naar een onderliggend proces verzonden met behulp van anonieme pijpen. In dit voorbeeld wordt een AnonymousPipeServerStream object gemaakt in een bovenliggend proces met een PipeDirection waarde van PipeDirection.Out. Er wordt ook een AnonymousPipeClientStream object gemaakt in een onderliggend proces met een PipeDirection waarde van PipeDirection.In. Het bovenliggende proces verzendt vervolgens een door de gebruiker opgegeven tekenreeks naar het onderliggende proces. De tekenreeks wordt weergegeven in de console.
Dit voorbeeld is bedoeld voor het serverproces, dat gebruikmaakt van de AnonymousPipeServerStream klasse. Voor het volledige codevoorbeeld, inclusief de code voor zowel de pipe-client als de server, raadpleegt u How to: Use Anonymous Pipes for Local Interprocess Communication.
//<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>
Opmerkingen
Anonieme pijpen helpen veilige en veilige communicatie tussen processen tussen onderliggende en bovenliggende processen te bieden. Met de AnonymousPipeServerStream klasse kan een bovenliggend proces informatie verzenden of ontvangen van een onderliggend proces.
Anonieme pijpen zijn niet-benoemde, eenrichtingspijpen die doorgaans gegevens overdragen tussen bovenliggende en onderliggende processen. Anonieme pijpen zijn altijd lokaal; ze kunnen niet via een netwerk worden gebruikt. Een PipeDirection waarde van InOut wordt niet ondersteund omdat anonieme pijpen in één richting zijn gedefinieerd.
Anonieme pijpen bieden geen ondersteuning voor de PipeTransmissionMode.Message leesmodus.
De clientzijde van een anonieme pijp moet worden gemaakt op basis van een pijpgreep die door de server wordt geleverd door de methode aan te GetClientHandleAsString roepen. De tekenreeks wordt vervolgens doorgegeven als een parameter bij het maken van het clientproces. Vanuit het clientproces wordt het vervolgens als parameter AnonymousPipeClientStream doorgegeven aan de pipeHandleAsString constructor.
Het AnonymousPipeServerStream object moet de clienthandgreep verwijderen met behulp van de DisposeLocalCopyOfClientHandle methode om een melding te ontvangen wanneer de client wordt afgesloten.
Constructors
| Name | Description |
|---|---|
| AnonymousPipeServerStream() |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse met de opgegeven pijprichting, de modus overerfbaarheid, buffergrootte en pijpbeveiliging. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse met de opgegeven pijprichting, de overdraagbaarheidsmodus en de buffergrootte. |
| AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse met de opgegeven pijprichting en de overnamemodus. |
| AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse van de opgegeven pijpgrepen. |
| AnonymousPipeServerStream(PipeDirection) |
Initialiseert een nieuw exemplaar van de AnonymousPipeServerStream klasse met de opgegeven pijprichting. |
Eigenschappen
| Name | Description |
|---|---|
| CanRead |
Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom leesbewerkingen ondersteunt. (Overgenomen van PipeStream) |
| CanSeek |
Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom zoekbewerkingen ondersteunt. (Overgenomen van PipeStream) |
| CanTimeout |
Hiermee wordt een waarde opgehaald die bepaalt of er een time-out optreedt voor de huidige stroom. (Overgenomen van Stream) |
| CanWrite |
Hiermee wordt een waarde opgehaald die aangeeft of de huidige stroom schrijfbewerkingen ondersteunt. (Overgenomen van PipeStream) |
| ClientSafePipeHandle |
Hiermee haalt u de veilige ingang op voor het AnonymousPipeClientStream object dat momenteel is verbonden met het AnonymousPipeServerStream object. |
| InBufferSize |
Hiermee haalt u de grootte, in bytes, van de binnenkomende buffer voor een pijp op. (Overgenomen van PipeStream) |
| IsAsync |
Hiermee wordt een waarde opgehaald die aangeeft of een PipeStream object asynchroon of synchroon is geopend. (Overgenomen van PipeStream) |
| IsConnected |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of een PipeStream object is verbonden. (Overgenomen van PipeStream) |
| IsHandleExposed |
Hiermee wordt een waarde opgehaald die aangeeft of een ingang voor een PipeStream object wordt weergegeven. (Overgenomen van PipeStream) |
| IsMessageComplete |
Hiermee wordt een waarde opgehaald die aangeeft of er meer gegevens in het bericht zijn geretourneerd door de meest recente leesbewerking. (Overgenomen van PipeStream) |
| Length |
Hiermee haalt u de lengte van een stream op, in bytes. (Overgenomen van PipeStream) |
| OutBufferSize |
Hiermee haalt u de grootte, in bytes, van de uitgaande buffer voor een pijp op. (Overgenomen van PipeStream) |
| Position |
Hiermee haalt u de huidige positie van de huidige stroom op of stelt u deze in. (Overgenomen van PipeStream) |
| ReadMode |
Hiermee stelt u de leesmodus voor het AnonymousPipeServerStream object in. Voor anonieme pijpen moet de transmissiemodus zijn Byte. |
| ReadTimeout |
Hiermee wordt een waarde opgehaald of ingesteld, in milliseconden, die bepaalt hoe lang de stroom probeert te lezen voordat er een time-out optreedt. (Overgenomen van Stream) |
| SafePipeHandle |
Hiermee haalt u de veilige ingang op voor het lokale uiteinde van de pijp die door het huidige PipeStream object wordt ingekapseld. (Overgenomen van PipeStream) |
| TransmissionMode |
Hiermee haalt u de transmissiemodus van de pijp op die wordt ondersteund door de huidige pijp. |
| WriteTimeout |
Hiermee wordt een waarde opgehaald of ingesteld, in milliseconden, die bepaalt hoe lang de stream probeert te schrijven voordat er een time-out optreedt. (Overgenomen van Stream) |
Methoden
| Name | Description |
|---|---|
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Begint een asynchrone leesbewerking. (Overgenomen van PipeStream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Hiermee wordt een asynchrone schrijfbewerking gestart. (Overgenomen van PipeStream) |
| CheckPipePropertyOperations() |
Controleert of de pijp de juiste status heeft voor het ophalen of instellen van eigenschappen. (Overgenomen van PipeStream) |
| CheckReadOperations() |
Controleert of de pijp een verbonden status heeft voor leesbewerkingen. (Overgenomen van PipeStream) |
| CheckWriteOperations() |
Controleert of de pijp een verbonden status heeft voor schrijfbewerkingen. (Overgenomen van PipeStream) |
| Close() |
Hiermee sluit u de huidige stroom en worden alle resources (zoals sockets en bestandsingangen) die aan de huidige stroom zijn gekoppeld, vrijgegeven. In plaats van deze methode aan te roepen, moet u ervoor zorgen dat de stream correct wordt verwijderd. (Overgenomen van Stream) |
| CopyTo(Stream, Int32) |
Leest de bytes uit de huidige stream en schrijft ze naar een andere stroom, met behulp van een opgegeven buffergrootte. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CopyTo(Stream) |
Leest de bytes uit de huidige stream en schrijft ze naar een andere stream. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CopyToAsync(Stream, CancellationToken) |
Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stream met behulp van een opgegeven annuleringstoken. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stroom, met behulp van een opgegeven buffergrootte en annuleringstoken. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CopyToAsync(Stream, Int32) |
Asynchroon leest de bytes uit de huidige stream en schrijft deze naar een andere stroom, met behulp van een opgegeven buffergrootte. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CopyToAsync(Stream) |
Asynchroon leest de bytes uit de huidige stream en schrijft ze naar een andere stream. Beide streamsposities worden geavanceerd door het aantal gekopieerde bytes. (Overgenomen van Stream) |
| CreateObjRef(Type) |
Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object. (Overgenomen van MarshalByRefObject) |
| CreateWaitHandle() |
Verouderd.
Verouderd.
Verouderd.
Wijst een WaitHandle object toe. (Overgenomen van Stream) |
| Dispose() |
Alle resources die worden gebruikt door de Stream. (Overgenomen van Stream) |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die door de PipeStream klasse worden gebruikt en brengt eventueel de beheerde resources vrij. (Overgenomen van PipeStream) |
| DisposeAsync() |
Geeft asynchroon de onbeheerde resources vrij die worden gebruikt door de Stream. (Overgenomen van Stream) |
| DisposeLocalCopyOfClientHandle() |
Hiermee sluit u de lokale kopie van de ingang van het AnonymousPipeClientStream object. |
| EndRead(IAsyncResult) |
Hiermee wordt een asynchrone leesaanvraag beëindigd. (Overgenomen van PipeStream) |
| EndWrite(IAsyncResult) |
Hiermee wordt een asynchrone schrijfaanvraag beëindigd. (Overgenomen van PipeStream) |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| Finalize() |
Publiceert onbeheerde resources en voert andere opschoonbewerkingen uit voordat het AnonymousPipeServerStream exemplaar wordt vrijgemaakt door garbagecollection. |
| Flush() |
Wist de buffer voor de huidige stroom en zorgt ervoor dat gebufferde gegevens naar het onderliggende apparaat worden geschreven. (Overgenomen van PipeStream) |
| FlushAsync() |
Asynchroon wist alle buffers voor deze stroom en zorgt ervoor dat eventuele gebufferde gegevens naar het onderliggende apparaat worden geschreven. (Overgenomen van Stream) |
| FlushAsync(CancellationToken) |
Asynchroon wist de buffer voor de huidige stroom en zorgt ervoor dat eventuele gebufferde gegevens naar het onderliggende apparaat worden geschreven. (Overgenomen van PipeStream) |
| GetAccessControl() |
Hiermee haalt u een PipeSecurity object op dat de toegangsbeheerlijstvermeldingen (ACL) inkapselt voor de pijp die wordt beschreven door het huidige PipeStream object. (Overgenomen van PipeStream) |
| GetClientHandleAsString() |
Hiermee haalt u de ingang van het verbonden AnonymousPipeClientStream object op als een tekenreeks. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetLifetimeService() |
Verouderd.
Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd. (Overgenomen van MarshalByRefObject) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Initialiseert een PipeStream object van het opgegeven SafePipeHandle object. (Overgenomen van PipeStream) |
| InitializeLifetimeService() |
Verouderd.
Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren. (Overgenomen van MarshalByRefObject) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| MemberwiseClone(Boolean) |
Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object. (Overgenomen van MarshalByRefObject) |
| ObjectInvariant() |
Verouderd.
Biedt ondersteuning voor een Contract. (Overgenomen van Stream) |
| Read(Byte[], Int32, Int32) |
Leest een blok bytes uit een stream en schrijft de gegevens naar een opgegeven buffer vanaf een opgegeven positie voor een opgegeven lengte. (Overgenomen van PipeStream) |
| Read(Span<Byte>) |
Hiermee wordt een reeks bytes uit de huidige stroom gelezen, naar een bytematrix geschreven en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes. (Overgenomen van PipeStream) |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchroon leest een reeks bytes van de huidige stroom naar een bytematrix die begint op een opgegeven positie voor een opgegeven aantal bytes, de positie binnen de stream door het aantal gelezen bytes en bewaakt annuleringsaanvragen. (Overgenomen van PipeStream) |
| ReadAsync(Byte[], Int32, Int32) |
Asynchroon leest een reeks bytes uit de huidige stroom en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes. (Overgenomen van Stream) |
| ReadAsync(Memory<Byte>, CancellationToken) |
Asynchroon leest een reeks bytes uit de huidige stroom, schrijft deze naar een bytegeheugenbereik, verplaatst de positie in de stream door het aantal bytes lezen en bewaakt annuleringsaanvragen. (Overgenomen van PipeStream) |
| ReadAtLeast(Span<Byte>, Int32, Boolean) |
Hiermee wordt ten minste een minimum aantal bytes uit de huidige stroom gelezen en wordt de positie binnen de stream verplaatst door het aantal gelezen bytes. (Overgenomen van Stream) |
| ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Asynchroon leest ten minste een minimum aantal bytes uit de huidige stroom, verplaatst de positie binnen de stream door het aantal gelezen bytes en bewaakt annuleringsaanvragen. (Overgenomen van Stream) |
| ReadByte() |
Leest een byte uit een pijp. (Overgenomen van PipeStream) |
| ReadExactly(Byte[], Int32, Int32) |
|
| ReadExactly(Span<Byte>) |
Hiermee worden bytes van de huidige stroom gelezen en wordt de positie binnen de stroom verplaatst totdat de |
| ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchroon leest |
| ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchroon leest bytes uit de huidige stroom, verplaatst de positie binnen de stream totdat de |
| Seek(Int64, SeekOrigin) |
Hiermee stelt u de huidige positie van de huidige stroom in op de opgegeven waarde. (Overgenomen van PipeStream) |
| SetAccessControl(PipeSecurity) |
Hiermee past u de ACL-vermeldingen (Access Control List) toe die zijn opgegeven door een PipeSecurity object op de pijp die is opgegeven door het huidige PipeStream object. (Overgenomen van PipeStream) |
| SetLength(Int64) |
Hiermee stelt u de lengte van de huidige stroom in op de opgegeven waarde. (Overgenomen van PipeStream) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
| WaitForPipeDrain() |
Wacht tot het andere einde van de pijp alle verzonden bytes heeft gelezen. (Overgenomen van PipeStream) |
| Write(Byte[], Int32, Int32) |
Hiermee schrijft u een blok bytes naar de huidige stroom met behulp van gegevens uit een buffer. (Overgenomen van PipeStream) |
| Write(ReadOnlySpan<Byte>) |
Hiermee schrijft u een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes. (Overgenomen van PipeStream) |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchroon schrijft een opgegeven aantal bytes van een bytematrix vanaf een opgegeven positie, wordt de huidige positie binnen deze stroom vooruitgegaan door het aantal geschreven bytes en worden annuleringsaanvragen gecontroleerd. (Overgenomen van PipeStream) |
| WriteAsync(Byte[], Int32, Int32) |
Asynchroon schrijft een reeks bytes naar de huidige stroom en wordt de huidige positie binnen deze stroom verplaatst door het aantal geschreven bytes. (Overgenomen van Stream) |
| WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchroon schrijft een reeks bytes naar de huidige stroom, verplaatst de huidige positie binnen deze stream door het aantal geschreven bytes en bewaakt annuleringsaanvragen. (Overgenomen van PipeStream) |
| WriteByte(Byte) |
Hiermee schrijft u een byte naar de huidige stream. (Overgenomen van PipeStream) |
Extensiemethoden
| Name | Description |
|---|---|
| ConfigureAwait(IAsyncDisposable, Boolean) |
Hiermee configureert u hoe wacht op de taken die worden geretourneerd op basis van een asynchroon wegwerp, worden uitgevoerd. |
| CopyToAsync(Stream, PipeWriter, CancellationToken) |
Asynchroon leest de bytes van de Stream en schrijft ze naar het opgegeven PipeWriter, met behulp van een annuleringstoken. |
| GetAccessControl(PipeStream) |
Retourneert de beveiligingsgegevens van een pijpstroom. |
| SetAccessControl(PipeStream, PipeSecurity) |
Hiermee wijzigt u de beveiligingskenmerken van een bestaande pijpstroom. |