AnonymousPipeClientStream Klasa

Definicja

Uwidacznia stronę klienta anonimowego strumienia potoku, który obsługuje zarówno synchroniczne, jak i asynchroniczne operacje odczytu i zapisu (bez obsługi anulowania na platformach Windows).

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

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 jest AnonymousPipeServerStream obiekt w procesie nadrzędnym PipeDirection o wartości Out. Tworzy również AnonymousPipeClientStream obiekt w procesie podrzędnym o PipeDirection wartości 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 klienta, który jest uruchamiany przez proces serwera. Nazwij wynikowy plik wykonywalny z kodu pipeClient.exe klienta i skopiuj go do tego samego katalogu co plik wykonywalny serwera podczas uruchamiania tego przykładu. 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.Core.dll>

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

ref class PipeClient
{
public:
    static void Main(array<String^>^ args)
    {
        if (args->Length > 1)
        {
            PipeStream^ pipeClient = gcnew AnonymousPipeClientStream(PipeDirection::In, args[1]);

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

            StreamReader^ sr = gcnew StreamReader(pipeClient);

            // Display the read text to the console
            String^ temp;

            // Wait for 'sync message' from the server.
            do
            {
                Console::WriteLine("[CLIENT] Wait for sync...");
                temp = sr->ReadLine();
            }
            while (!temp->StartsWith("SYNC"));

            // Read the server data and echo to the console.
            while ((temp = sr->ReadLine()) != nullptr)
            {
                Console::WriteLine("[CLIENT] Echo: " + temp);
            }
            sr->Close();
            pipeClient->Close();
        }
        Console::Write("[CLIENT] Press Enter to continue...");
        Console::ReadLine();
    }
};

int main()
{
    array<String^>^ args = Environment::GetCommandLineArgs();
    PipeClient::Main(args);
}
//</snippet01>
//<snippet01>
using System;
using System.IO;
using System.IO.Pipes;

class PipeClient
{
    static void Main(string[] args)
    {
        if (args.Length > 0)
        {
            using (PipeStream pipeClient =
                new AnonymousPipeClientStream(PipeDirection.In, args[0]))
            {
                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.",
                   pipeClient.TransmissionMode);

                using (StreamReader sr = new StreamReader(pipeClient))
                {
                    // Display the read text to the console
                    string temp;

                    // Wait for 'sync message' from the server.
                    do
                    {
                        Console.WriteLine("[CLIENT] Wait for sync...");
                        temp = sr.ReadLine();
                    }
                    while (!temp.StartsWith("SYNC"));

                    // Read the server data and echo to the console.
                    while ((temp = sr.ReadLine()) != null)
                    {
                        Console.WriteLine("[CLIENT] Echo: " + temp);
                    }
                }
            }
        }
        Console.Write("[CLIENT] Press Enter to continue...");
        Console.ReadLine();
    }
}
//</snippet01>
'<snippet01>
Imports System.IO
Imports System.IO.Pipes

Class PipeClient
    Shared Sub Main(args() as String)
        If args.Length > 0 Then
            Using pipeClient As New AnonymousPipeClientStream(PipeDirection.In, args(0))
                Console.WriteLine("[CLIENT] Current TransmissionMode: {0}.", _
                   pipeClient.TransmissionMode)

                Using sr As New StreamReader(pipeClient)
                    ' Display the read text to the console
                    Dim temp As String

                    ' Wait for 'sync message' from the server.
                    Do
                        Console.WriteLine("[CLIENT] Wait for sync...")
                        temp = sr.ReadLine()
                    Loop While temp.StartsWith("SYNC") = False

                    ' Read the server data and echo to the console.
                    temp = sr.ReadLine()
                    While Not temp = Nothing
                        Console.WriteLine("[CLIENT] Echo: " + temp)
                        temp = sr.ReadLine()
                    End While
                End Using
            End Using
        End If
        Console.Write("[CLIENT] Press Enter to continue...")
        Console.ReadLine()
    End Sub
End Class
'</snippet01>

Uwagi

Potoki anonimowe ułatwiają bezpieczną i bezpieczną komunikację między procesami podrzędnymi i nadrzędnymi. Klasa AnonymousPipeClientStream umożliwia procesowi podrzędnego nawiązywanie połączenia z procesem nadrzędnym i wymianę informacji.

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 przekazywany do konstruktora AnonymousPipeClientStream jako parametru pipeHandleAsString .

W systemie Windows operacje odczytu i zapisu asynchroniczne (nakładające się) nie są obsługiwane przez potoki anonimowe (zobacz https://docs.microsoft.com/en-us/windows/win32/ipc/anonymous-pipe-operations). Klasa AnonymousPipeClientStream będzie nadal planować pracę w puli wątków na platformach Windows, więc operacje asynchroniczne Stream działają, ale anulowanie tych operacji nie jest obsługiwane.

Konstruktory

AnonymousPipeClientStream(PipeDirection, SafePipeHandle)

Inicjuje AnonymousPipeClientStream nowe wystąpienie klasy z określonego dojścia.

AnonymousPipeClientStream(PipeDirection, String)

Inicjuje AnonymousPipeClientStream nowe wystąpienie klasy z określonym kierunkiem potoku i reprezentacją ciągu uchwytu potoku.

AnonymousPipeClientStream(String)

Inicjuje nowe wystąpienie AnonymousPipeClientStream klasy z określoną reprezentacją ciągu uchwytu 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)
InBufferSize

Pobiera rozmiar w bajtach buforu przychodzącego dla potoku.

(Odziedziczone po PipeStream)
IsAsync

Pobiera wartość wskazującą, czy PipeStream obiekt został otwarty asynchronicznie, czy 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 dojście PipeStream do obiektu jest uwidocznione.

(Odziedziczone po PipeStream)
IsMessageComplete

Pobiera wartość wskazującą, czy w komunikacie zwróconym z najnowszej operacji odczytu jest więcej danych.

(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 AnonymousPipeClientStream obiektu.

ReadTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed przekroczeniem 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żący potok.

WriteTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował zapisać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)

Metody

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

Rozpoczyna asynchroniczną operację odczytu.

(Odziedziczone po PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczyna asynchroniczną operację zapisu.

(Odziedziczone po PipeStream)
CheckPipePropertyOperations()

Sprawdza, czy potok jest w odpowiednim stanie do 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 dla operacji zapisu.

(Odziedziczone po PipeStream)
Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i dojścia 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. Oba 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. Oba 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. Oba 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. Oba 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. Oba 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. Oba 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 program Stream.

(Odziedziczone po Stream)
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 czyszczenia przed odzyskaniem AnonymousPipeClientStream wystąpienia przez odzyskiwanie pamięci.

Flush()

Czyści bufor dla bieżącego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu źródłowym.

(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)
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 wartość bieżącego wystąpienia.

(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 w celu kontrolowania zasad 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, zaczynając 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 przez liczbę 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, rozwija pozycję w strumieniu przez liczbę 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 przez liczbę 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 przez liczbę odczytanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt z potoku.

(Odziedziczone po PipeStream)
ReadExactly(Byte[], Int32, Int32)

Odczytuje count liczbę bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu.

(Odziedziczone po Stream)
ReadExactly(Span<Byte>)

Odczytuje bajty z bieżącego strumienia i przesuwa pozycję w strumieniu do buffer momentu wypełnienia.

(Odziedziczone po Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje count liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu i monitoruje żądania anulowania.

(Odziedziczone po Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia, przesuwa pozycję w strumieniu do buffer momentu wypełnienia i monitoruje żądania anulowania.

(Odziedziczone po Stream)
Seek(Int64, SeekOrigin)

Ustawia bieżące położenie 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 przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.

(Odziedziczone po PipeStream)
WriteAsync(Byte[], Int32, Int32)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi 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, przesuwa bieżącą pozycję w tym strumieniu przez 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 jednorazowego użytku asynchronicznego.

Dotyczy