AnonymousPipeServerStream Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zpřístupňuje datový proud kolem anonymního kanálu, který podporuje synchronní i asynchronní operace čtení a zápisu.
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
- Dědičnost
- Dědičnost
Příklady
Následující příklad odešle řetězec z nadřazeného procesu podřízeného procesu pomocí anonymních kanálů. Tento příklad vytvoří AnonymousPipeServerStream objekt v nadřazeného procesu s PipeDirection hodnotou PipeDirection.Out. Vytvoří také AnonymousPipeClientStream objekt v podřízené procesu s PipeDirection hodnotou PipeDirection.In. Nadřazený proces poté odešle řetězec zadaný uživatelem podřízenému procesu. Řetězec se zobrazí v konzole.
Tento příklad je určený pro serverový proces, který používá AnonymousPipeServerStream třídu . Celý příklad kódu, včetně kódu pro klienta i server kanálu, najdete v tématu Postupy: Použití anonymních kanálů pro místní komunikaci mezi procesy.
//<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>
Poznámky
Anonymní kanály pomáhají zajistit bezpečnou a zabezpečenou komunikaci mezi procesy mezi podřízenými a nadřazenými procesy. Třída AnonymousPipeServerStream umožňuje nadřazeným procesům odesílat nebo přijímat informace z podřízeného procesu.
Anonymní kanály jsou nepojmenované jednosměrné kanály, které obvykle přenášejí data mezi nadřazeným a podřízeným procesem. Anonymní kanály jsou vždy místní; nelze je používat v síti. Hodnota PipeDirectionInOut není podporována, protože anonymní kanály jsou definovány tak, aby byly jednosměrné.
Anonymní kanály nepodporují PipeTransmissionMode.Message režim čtení.
Klientská strana anonymního kanálu musí být vytvořena z popisovače kanálu poskytnutého na straně serveru voláním GetClientHandleAsString metody. Řetězec se pak předá jako parametr při vytváření procesu klienta. Z procesu klienta se pak předá konstruktoru AnonymousPipeClientStreampipeHandleAsString
jako parametr.
Objekt AnonymousPipeServerStream musí odstranit popisovač klienta pomocí DisposeLocalCopyOfClientHandle metody, aby byl upozorněn při ukončení klienta.
Konstruktory
AnonymousPipeServerStream() |
Inicializuje novou instanci AnonymousPipeServerStream třídy . |
AnonymousPipeServerStream(PipeDirection) |
Inicializuje novou instanci AnonymousPipeServerStream třídy se zadaným směrem kanálu. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Inicializuje novou instanci AnonymousPipeServerStream třídy se zadaným směrováním kanálu a režimem dědičnosti. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Inicializuje novou instanci AnonymousPipeServerStream třídy se zadaným směrováním kanálu, režimem dědičnosti a velikostí vyrovnávací paměti. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Inicializuje novou instanci AnonymousPipeServerStream třídy se zadaným směrováním kanálu, režimem dědičnosti, velikostí vyrovnávací paměti a zabezpečením kanálu. |
AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Inicializuje novou instanci AnonymousPipeServerStream třídy ze zadaných úchytů kanálu. |
Vlastnosti
CanRead |
Získá hodnotu označující, zda aktuální datový proud podporuje operace čtení. (Zděděno od PipeStream) |
CanSeek |
Získá hodnotu označující, zda aktuální datový proud podporuje operace hledání. (Zděděno od PipeStream) |
CanTimeout |
Získá hodnotu, která určuje, zda aktuální datový proud může vypršení časového limitu. (Zděděno od Stream) |
CanWrite |
Získá hodnotu označující, zda aktuální datový proud podporuje operace zápisu. (Zděděno od PipeStream) |
ClientSafePipeHandle |
Získá bezpečný popisovač pro AnonymousPipeClientStream objekt, který je právě připojen k objektu AnonymousPipeServerStream . |
InBufferSize |
Získá velikost v bajtech příchozí vyrovnávací paměti pro kanál. (Zděděno od PipeStream) |
IsAsync |
Získá hodnotu označující, zda PipeStream objekt byl otevřen asynchronně nebo synchronně. (Zděděno od PipeStream) |
IsConnected |
Získá nebo nastaví hodnotu označující, zda PipeStream je objekt připojen. (Zděděno od PipeStream) |
IsHandleExposed |
Získá hodnotu označující, zda je vystaven popisovač objektu PipeStream . (Zděděno od PipeStream) |
IsMessageComplete |
Získá hodnotu označující, zda je více dat ve zprávě vrácena z poslední operace čtení. (Zděděno od PipeStream) |
Length |
Získá délku datového proudu v bajtech. (Zděděno od PipeStream) |
OutBufferSize |
Získá velikost v bajtech odchozí vyrovnávací paměti pro kanál. (Zděděno od PipeStream) |
Position |
Získá nebo nastaví aktuální pozici aktuálního datového proudu. (Zděděno od PipeStream) |
ReadMode |
Nastaví režim čtení objektu AnonymousPipeServerStream . Pro anonymní kanály musí být Byterežim přenosu . |
ReadTimeout |
Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí číst před vypršením časového limitu. (Zděděno od Stream) |
SafePipeHandle |
Získá bezpečný popisovač pro místní konec potrubí, který aktuální PipeStream objekt zapouzdřuje. (Zděděno od PipeStream) |
TransmissionMode |
Získá režim přenosu kanálu, který je podporován aktuální kanál. |
WriteTimeout |
Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí zapisovat před vypršením časového limitu. (Zděděno od Stream) |
Metody
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Zahájí asynchronní operaci čtení. (Zděděno od PipeStream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu. (Zděděno od PipeStream) |
CheckPipePropertyOperations() |
Ověří, že kanál je ve správném stavu pro získání nebo nastavení vlastností. (Zděděno od PipeStream) |
CheckReadOperations() |
Ověří, že kanál je v připojeném stavu pro operace čtení. (Zděděno od PipeStream) |
CheckWriteOperations() |
Ověřuje, že kanál je v připojeném stavu pro operace zápisu. (Zděděno od PipeStream) |
Close() |
Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu. Místo volání této metody se ujistěte, že datový proud je správně odstraněn. (Zděděno od Stream) |
CopyTo(Stream) |
Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyTo(Stream, Int32) |
Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu s použitím zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, CancellationToken) |
Asynchronně přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadaného tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, Int32) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů. (Zděděno od Stream) |
CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
CreateWaitHandle() |
Zastaralé.
Zastaralé.
Zastaralé.
Přidělí WaitHandle objekt. (Zděděno od Stream) |
Dispose() |
Uvolní všechny prostředky používané nástrojem Stream. (Zděděno od Stream) |
Dispose(Boolean) |
Uvolní nespravované prostředky používané PipeStream třídou a volitelně uvolní spravované prostředky. (Zděděno od PipeStream) |
DisposeAsync() |
Asynchronně uvolní nespravované prostředky, které Streampoužívá . (Zděděno od Stream) |
DisposeLocalCopyOfClientHandle() |
Zavře místní kopii úchytu AnonymousPipeClientStream objektu. |
EndRead(IAsyncResult) |
Ukončí čekající asynchronní požadavek na čtení. (Zděděno od PipeStream) |
EndWrite(IAsyncResult) |
Ukončí čekající asynchronní požadavek na zápis. (Zděděno od PipeStream) |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
Finalize() |
Uvolní nespravované prostředky a provede další operace čištění před uvolněním AnonymousPipeServerStream instance uvolňováním paměti. |
Flush() |
Vymaže vyrovnávací paměť pro aktuální datový proud a způsobí zápis všech dat do vyrovnávací paměti do základního zařízení. (Zděděno od PipeStream) |
FlushAsync() |
Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do základního zařízení. (Zděděno od Stream) |
FlushAsync(CancellationToken) |
Asynchronně vymaže vyrovnávací paměť pro aktuální datový proud a způsobí zápis všech dat do vyrovnávací paměti do základního zařízení. (Zděděno od PipeStream) |
GetAccessControl() |
PipeSecurity Získá objekt, který zapouzdřuje položky seznamu řízení přístupu (ACL) pro potrubí popsané aktuálním PipeStream objektem. (Zděděno od PipeStream) |
GetClientHandleAsString() |
Získá popisovač připojeného AnonymousPipeClientStream objektu jako řetězec. |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetLifetimeService() |
Zastaralé.
Načte aktuální životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Inicializuje PipeStream objekt ze zadaného SafePipeHandle objektu. (Zděděno od PipeStream) |
InitializeLifetimeService() |
Zastaralé.
Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
MemberwiseClone(Boolean) |
Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu. (Zděděno od MarshalByRefObject) |
ObjectInvariant() |
Zastaralé.
Poskytuje podporu pro Contract. (Zděděno od Stream) |
Read(Byte[], Int32, Int32) |
Načte blok bajtů z datového proudu a zapíše data do zadané vyrovnávací paměti počínaje zadanou polohou na zadanou délku. (Zděděno od PipeStream) |
Read(Span<Byte>) |
Načte posloupnost bajtů z aktuálního datového proudu, zapíše je do pole bajtů a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od PipeStream) |
ReadAsync(Byte[], Int32, Int32) |
Asynchronně přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně přečte sekvenci bajtů z aktuálního datového proudu do pole bajtů začínající na zadané pozici pro zadaný počet bajtů, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení. (Zděděno od PipeStream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, zapíše ji do rozsahu bajtové paměti, posune pozici v rámci datového proudu o počet přečtených bajtů a monitoruje požadavky na zrušení. (Zděděno od PipeStream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Přečte alespoň minimální počet bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů. (Zděděno od Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Asynchronně přečte alespoň minimální počet bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení. (Zděděno od Stream) |
ReadByte() |
Načte bajt z svislé roury. (Zděděno od PipeStream) |
ReadExactly(Byte[], Int32, Int32) |
Načte |
ReadExactly(Span<Byte>) |
Načte bajty z aktuálního datového proudu a posune pozici v rámci datového proudu, dokud |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně načte |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchronně čte bajty z aktuálního datového proudu, posune pozici v rámci datového proudu až do |
Seek(Int64, SeekOrigin) |
Nastaví aktuální pozici aktuálního datového proudu na zadanou hodnotu. (Zděděno od PipeStream) |
SetAccessControl(PipeSecurity) |
Použije položky seznamu řízení přístupu (ACL) určené objektem PipeSecurity na kanál určený aktuálním PipeStream objektem. (Zděděno od PipeStream) |
SetLength(Int64) |
Nastaví délku aktuálního datového proudu na zadanou hodnotu. (Zděděno od PipeStream) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
WaitForPipeDrain() |
Čeká, až druhý konec kanálu přečte všechny odeslané bajty. (Zděděno od PipeStream) |
Write(Byte[], Int32, Int32) |
Zapíše blok bajtů do aktuálního datového proudu pomocí dat z vyrovnávací paměti. (Zděděno od PipeStream) |
Write(ReadOnlySpan<Byte>) |
Zapíše posloupnost bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů. (Zděděno od PipeStream) |
WriteAsync(Byte[], Int32, Int32) |
Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů. (Zděděno od Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně zapíše zadaný počet bajtů z bajtového pole počínaje zadanou pozicí, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky zrušení. (Zděděno od PipeStream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení. (Zděděno od PipeStream) |
WriteByte(Byte) |
Zapíše bajt do aktuálního datového proudu. (Zděděno od PipeStream) |
Metody rozšíření
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Asynchronně přečte bajty z objektu Stream a zapíše je do zadaného PipeWriterobjektu pomocí tokenu zrušení. |
GetAccessControl(PipeStream) |
Vrátí informace o zabezpečení datového proudu kanálu. |
SetAccessControl(PipeStream, PipeSecurity) |
Změní atributy zabezpečení existujícího datového proudu kanálu. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, jak se provádí čekání na úlohy vrácené z asynchronního jednorázového použití. |
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro