AnonymousPipeServerStream Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Uwidacznia strumień wokół potoku anonimowego, który obsługuje zarówno synchroniczne, jak i asynchroniczne operacje odczytu i zapisu.
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
- Dziedziczenie
- Dziedziczenie
Przykłady
Poniższy przykład wysyła ciąg z procesu nadrzędnego do procesu podrzędnego przy użyciu potoków anonimowych. W tym przykładzie tworzony AnonymousPipeServerStream jest obiekt w procesie nadrzędnym PipeDirection o wartości PipeDirection.Out. Tworzy również AnonymousPipeClientStream obiekt w procesie podrzędnym o PipeDirection wartości PipeDirection.In. Następnie proces nadrzędny wysyła ciąg dostarczony przez użytkownika do procesu podrzędnego. Ciąg jest wyświetlany w konsoli programu .
Ten przykład dotyczy procesu serwera, który używa AnonymousPipeServerStream klasy . Dla całego przykładu kodu, w tym kodu dla klienta potoku i serwera, zobacz Instrukcje: używanie potoków anonimowych do lokalnej komunikacji międzyprocesowej.
//<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>
Uwagi
Potoki anonimowe ułatwiają bezpieczną i bezpieczną komunikację między procesami podrzędnymi i nadrzędnymi. Klasa AnonymousPipeServerStream umożliwia procesowi nadrzędnego wysyłanie lub odbieranie informacji z procesu podrzędnego.
Potoki anonimowe to nienazwane potoki jednokierunkowe, które zwykle przesyłają dane między procesami nadrzędnymi i podrzędnymi. Potoki anonimowe są zawsze lokalne; nie można ich używać za pośrednictwem sieci. PipeDirection Wartość nie jest obsługiwanaInOut, ponieważ potoki anonimowe są definiowane jako jednokierunkowe.
Potoki anonimowe nie obsługują PipeTransmissionMode.Message trybu odczytu.
Strona klienta potoku anonimowego musi zostać utworzona na podstawie uchwytu potoku dostarczonego przez serwer po stronie serwera przez wywołanie GetClientHandleAsString metody . Ciąg jest następnie przekazywany jako parametr podczas tworzenia procesu klienta. Z procesu klienta jest następnie przekazywany do konstruktora AnonymousPipeClientStream jako parametru pipeHandleAsString
.
Obiekt AnonymousPipeServerStream musi usunąć uchwyt klienta przy użyciu DisposeLocalCopyOfClientHandle metody , aby otrzymywać powiadomienia po zakończeniu działania klienta.
Konstruktory
AnonymousPipeServerStream() |
Inicjuje nowe wystąpienie klasy AnonymousPipeServerStream. |
AnonymousPipeServerStream(PipeDirection) |
Inicjuje AnonymousPipeServerStream nowe wystąpienie klasy z określonym kierunkiem potoku. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability) |
Inicjuje AnonymousPipeServerStream nowe wystąpienie klasy z określonym kierunkiem potoku i trybem dziedziczenia. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32) |
Inicjuje AnonymousPipeServerStream nowe wystąpienie klasy z określonym kierunkiem potoku, trybem dziedziczenia i rozmiarem buforu. |
AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity) |
Inicjuje AnonymousPipeServerStream nowe wystąpienie klasy z określonym kierunkiem potoku, trybem dziedziczenia, rozmiarem buforu i zabezpieczeniami potoku. |
AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle) |
Inicjuje AnonymousPipeServerStream nowe wystąpienie klasy z określonych uchwytów potoku. |
Właściwości
CanRead |
Pobiera wartość wskazującą, czy bieżący strumień obsługuje operacje odczytu. (Odziedziczone po PipeStream) |
CanSeek |
Pobiera wartość wskazującą, czy bieżący strumień obsługuje operacje wyszukiwania. (Odziedziczone po PipeStream) |
CanTimeout |
Pobiera wartość określającą, czy bieżący strumień może upłynął limit czasu. (Odziedziczone po Stream) |
CanWrite |
Pobiera wartość wskazującą, czy bieżący strumień obsługuje operacje zapisu. (Odziedziczone po PipeStream) |
ClientSafePipeHandle |
Pobiera bezpieczny uchwyt dla AnonymousPipeClientStream obiektu, który jest obecnie połączony z obiektem AnonymousPipeServerStream . |
InBufferSize |
Pobiera rozmiar w bajtach buforu przychodzącego dla potoku. (Odziedziczone po PipeStream) |
IsAsync |
Pobiera wartość wskazującą PipeStream , czy obiekt został otwarty asynchronicznie lub synchronicznie. (Odziedziczone po PipeStream) |
IsConnected |
Pobiera lub ustawia wartość wskazującą PipeStream , czy obiekt jest połączony. (Odziedziczone po PipeStream) |
IsHandleExposed |
Pobiera wartość wskazującą, czy uchwyt do PipeStream obiektu jest uwidoczniony. (Odziedziczone po PipeStream) |
IsMessageComplete |
Pobiera wartość wskazującą, czy istnieje więcej danych w komunikacie zwróconym z najnowszej operacji odczytu. (Odziedziczone po PipeStream) |
Length |
Pobiera długość strumienia w bajtach. (Odziedziczone po PipeStream) |
OutBufferSize |
Pobiera rozmiar w bajtach buforu wychodzącego dla potoku. (Odziedziczone po PipeStream) |
Position |
Pobiera lub ustawia bieżącą pozycję bieżącego strumienia. (Odziedziczone po PipeStream) |
ReadMode |
Ustawia tryb odczytu dla AnonymousPipeServerStream obiektu. W przypadku potoków anonimowych tryb transmisji musi mieć Bytewartość . |
ReadTimeout |
Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed upływem limitu czasu. (Odziedziczone po Stream) |
SafePipeHandle |
Pobiera bezpieczny uchwyt dla lokalnego końca potoku, który jest hermetyzowany przez bieżący PipeStream obiekt. (Odziedziczone po PipeStream) |
TransmissionMode |
Pobiera tryb transmisji potoku obsługiwany przez bieżącą rurę. |
WriteTimeout |
Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień podejmie próbę zapisania przed upływem limitu czasu. (Odziedziczone po Stream) |
Metody
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Rozpoczyna operację odczytu asynchronicznego. (Odziedziczone po PipeStream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Rozpoczyna operację zapisu asynchronicznego. (Odziedziczone po PipeStream) |
CheckPipePropertyOperations() |
Sprawdza, czy potok jest w odpowiednim stanie pobierania lub ustawiania właściwości. (Odziedziczone po PipeStream) |
CheckReadOperations() |
Sprawdza, czy potok jest w stanie połączonym dla operacji odczytu. (Odziedziczone po PipeStream) |
CheckWriteOperations() |
Sprawdza, czy potok jest w stanie połączonym na potrzeby operacji zapisu. (Odziedziczone po PipeStream) |
Close() |
Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i uchwyty plików) skojarzone z bieżącym strumieniem. Zamiast wywoływać tę metodę, upewnij się, że strumień jest prawidłowo usuwany. (Odziedziczone po Stream) |
CopyTo(Stream) |
Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CopyTo(Stream, Int32) |
Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CopyToAsync(Stream) |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CopyToAsync(Stream, CancellationToken) |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CopyToAsync(Stream, Int32) |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania. Obie pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów. (Odziedziczone po Stream) |
CreateObjRef(Type) |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Odziedziczone po MarshalByRefObject) |
CreateWaitHandle() |
Przestarzałe.
Przestarzałe.
Przestarzałe.
WaitHandle Przydziela obiekt. (Odziedziczone po Stream) |
Dispose() |
Zwalnia wszelkie zasoby używane przez element Stream. (Odziedziczone po Stream) |
Dispose(Boolean) |
Zwalnia niezarządzane zasoby używane przez klasę PipeStream i opcjonalnie zwalnia zarządzane zasoby. (Odziedziczone po PipeStream) |
DisposeAsync() |
Asynchronicznie zwalnia niezarządzane zasoby używane przez Streamprogram . (Odziedziczone po Stream) |
DisposeLocalCopyOfClientHandle() |
Zamyka lokalną kopię uchwytu AnonymousPipeClientStream obiektu. |
EndRead(IAsyncResult) |
Kończy oczekujące żądanie odczytu asynchronicznego. (Odziedziczone po PipeStream) |
EndWrite(IAsyncResult) |
Kończy oczekujące asynchroniczne żądanie zapisu. (Odziedziczone po PipeStream) |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
Finalize() |
Zwalnia niezarządzane zasoby i wykonuje inne operacje oczyszczania przed odzyskaniem AnonymousPipeServerStream wystąpienia przez odzyskiwanie pamięci. |
Flush() |
Czyści bufor dla bieżącego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym. (Odziedziczone po PipeStream) |
FlushAsync() |
Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym. (Odziedziczone po Stream) |
FlushAsync(CancellationToken) |
Asynchronicznie czyści bufor dla bieżącego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym. (Odziedziczone po PipeStream) |
GetAccessControl() |
PipeSecurity Pobiera obiekt, który hermetyzuje wpisy listy kontroli dostępu (ACL) dla potoku opisanego przez bieżący PipeStream obiekt. (Odziedziczone po PipeStream) |
GetClientHandleAsString() |
Pobiera uchwyt połączonego AnonymousPipeClientStream obiektu jako ciąg. |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetLifetimeService() |
Przestarzałe.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
InitializeHandle(SafePipeHandle, Boolean, Boolean) |
Inicjuje PipeStream obiekt z określonego SafePipeHandle obiektu. (Odziedziczone po PipeStream) |
InitializeLifetimeService() |
Przestarzałe.
Uzyskuje obiekt usługi okresu istnienia, aby kontrolować zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu. (Odziedziczone po MarshalByRefObject) |
ObjectInvariant() |
Przestarzałe.
Zapewnia obsługę programu Contract. (Odziedziczone po Stream) |
Read(Byte[], Int32, Int32) |
Odczytuje blok bajtów ze strumienia i zapisuje dane w określonym buforze rozpoczynającym się od określonej pozycji dla określonej długości. (Odziedziczone po PipeStream) |
Read(Span<Byte>) |
Odczytuje sekwencję bajtów z bieżącego strumienia, zapisuje je w tablicy bajtów i rozwija pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po PipeStream) |
ReadAsync(Byte[], Int32, Int32) |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia do tablicy bajtów rozpoczynającej się w określonej pozycji dla określonej liczby bajtów, przechodzi pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po PipeStream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, zapisuje je w zakresie pamięci bajtów, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po PipeStream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Asynchronicznie odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
ReadByte() |
Odczytuje bajt z potoku. (Odziedziczone po PipeStream) |
ReadExactly(Byte[], Int32, Int32) |
Odczytuje |
ReadExactly(Span<Byte>) |
Odczytuje bajty z bieżącego strumienia i rozwija pozycję w strumieniu do momentu |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronicznie odczytuje |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchronicznie odczytuje bajty z bieżącego strumienia, przesuwa pozycję w strumieniu do |
Seek(Int64, SeekOrigin) |
Ustawia bieżącą pozycję bieżącego strumienia na określoną wartość. (Odziedziczone po PipeStream) |
SetAccessControl(PipeSecurity) |
Stosuje wpisy listy kontroli dostępu (ACL) określone przez PipeSecurity obiekt do potoku określonego przez bieżący PipeStream obiekt. (Odziedziczone po PipeStream) |
SetLength(Int64) |
Ustawia długość bieżącego strumienia na określoną wartość. (Odziedziczone po PipeStream) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
WaitForPipeDrain() |
Czeka na drugi koniec potoku, aby odczytać wszystkie wysłane bajty. (Odziedziczone po PipeStream) |
Write(Byte[], Int32, Int32) |
Zapisuje blok bajtów do bieżącego strumienia przy użyciu danych z buforu. (Odziedziczone po PipeStream) |
Write(ReadOnlySpan<Byte>) |
Zapisuje sekwencję bajtów do bieżącego strumienia i rozwija bieżącą pozycję w tym strumieniu według liczby zapisanych bajtów. (Odziedziczone po PipeStream) |
WriteAsync(Byte[], Int32, Int32) |
Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i rozwija bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów. (Odziedziczone po Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronicznie zapisuje określoną liczbę bajtów z tablicy bajtów rozpoczynającej się od określonej pozycji, zwiększa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania. (Odziedziczone po PipeStream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. (Odziedziczone po PipeStream) |
WriteByte(Byte) |
Zapisuje bajt do bieżącego strumienia. (Odziedziczone po PipeStream) |
Metody rozszerzania
GetAccessControl(PipeStream) |
Zwraca informacje o zabezpieczeniach strumienia potoku. |
SetAccessControl(PipeStream, PipeSecurity) |
Zmienia atrybuty zabezpieczeń istniejącego strumienia potoku. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje sposób oczekiwania na zadania zwracane z asynchronicznego jednorazowego wykonania. |
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla