Bagikan melalui


AnonymousPipeServerStream Kelas

Definisi

Mengekspos aliran di sekitar pipa anonim, yang mendukung operasi baca dan tulis yang sinkron dan asinkron.

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
Warisan
AnonymousPipeServerStream
Warisan
AnonymousPipeServerStream

Contoh

Contoh berikut mengirimkan string dari proses induk ke proses turunan menggunakan pipa anonim. Contoh ini membuat objek AnonymousPipeServerStream dalam proses induk dengan nilai PipeDirectionPipeDirection.Out. Ini juga membuat objek AnonymousPipeClientStream dalam proses anak dengan nilai PipeDirectionPipeDirection.In. Proses induk kemudian mengirim string yang disediakan pengguna ke proses turunan. String ditampilkan ke konsol.

Contoh ini untuk proses server, yang menggunakan kelas AnonymousPipeServerStream. Untuk seluruh contoh kode, termasuk kode untuk klien pipa dan server, lihat Cara: Menggunakan Pipa Anonim untuk Komunikasi Antarproseksi Lokal.

//<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>

Keterangan

Pipa anonim membantu menyediakan komunikasi antarproses yang aman dan aman antara proses anak dan induk. Kelas AnonymousPipeServerStream memungkinkan proses induk mengirim atau menerima informasi dari proses turunan.

Pipa anonim tidak disebutkan namanya, pipa satu arah yang biasanya mentransfer data antara proses induk dan anak. Pipa anonim selalu lokal; mereka tidak dapat digunakan melalui jaringan. Nilai PipeDirectionInOut tidak didukung karena pipa anonim didefinisikan satu arah.

Pipa anonim tidak mendukung mode baca PipeTransmissionMode.Message.

Sisi klien pipa anonim harus dibuat dari handel pipa yang disediakan oleh sisi server dengan memanggil metode GetClientHandleAsString. String kemudian diteruskan sebagai parameter saat membuat proses klien. Dari proses klien, kemudian diteruskan ke konstruktor AnonymousPipeClientStream sebagai parameter pipeHandleAsString.

Objek AnonymousPipeServerStream harus membuang handel klien menggunakan metode DisposeLocalCopyOfClientHandle untuk diberi tahu ketika klien keluar.

Konstruktor

AnonymousPipeServerStream()

Menginisialisasi instans baru kelas AnonymousPipeServerStream.

AnonymousPipeServerStream(PipeDirection)

Menginisialisasi instans baru kelas AnonymousPipeServerStream dengan arah pipa yang ditentukan.

AnonymousPipeServerStream(PipeDirection, HandleInheritability)

Menginisialisasi instans baru kelas AnonymousPipeServerStream dengan arah pipa dan mode pewarisan yang ditentukan.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32)

Menginisialisasi instans baru kelas AnonymousPipeServerStream dengan arah pipa yang ditentukan, mode warisan, dan ukuran buffer.

AnonymousPipeServerStream(PipeDirection, HandleInheritability, Int32, PipeSecurity)

Menginisialisasi instans baru kelas AnonymousPipeServerStream dengan arah pipa yang ditentukan, mode pewarisan, ukuran buffer, dan keamanan pipa.

AnonymousPipeServerStream(PipeDirection, SafePipeHandle, SafePipeHandle)

Menginisialisasi instans baru kelas AnonymousPipeServerStream dari handel pipa yang ditentukan.

Properti

CanRead

Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung operasi baca.

(Diperoleh dari PipeStream)
CanSeek

Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung operasi pencarian.

(Diperoleh dari PipeStream)
CanTimeout

Mendapatkan nilai yang menentukan apakah aliran saat ini dapat kehabisan waktu.

(Diperoleh dari Stream)
CanWrite

Mendapatkan nilai yang menunjukkan apakah aliran saat ini mendukung operasi tulis.

(Diperoleh dari PipeStream)
ClientSafePipeHandle

Mendapatkan handel aman untuk objek AnonymousPipeClientStream yang saat ini tersambung ke objek AnonymousPipeServerStream.

InBufferSize

Mendapatkan ukuran, dalam byte, dari buffer masuk untuk pipa.

(Diperoleh dari PipeStream)
IsAsync

Mendapatkan nilai yang menunjukkan apakah objek PipeStream dibuka secara asinkron atau sinkron.

(Diperoleh dari PipeStream)
IsConnected

Mendapatkan atau menetapkan nilai yang menunjukkan apakah objek PipeStream tersambung.

(Diperoleh dari PipeStream)
IsHandleExposed

Mendapatkan nilai yang menunjukkan apakah handel ke objek PipeStream diekspos.

(Diperoleh dari PipeStream)
IsMessageComplete

Mendapatkan nilai yang menunjukkan apakah ada lebih banyak data dalam pesan yang dikembalikan dari operasi baca terbaru.

(Diperoleh dari PipeStream)
Length

Mendapatkan panjang aliran, dalam byte.

(Diperoleh dari PipeStream)
OutBufferSize

Mendapatkan ukuran, dalam byte, dari buffer keluar untuk pipa.

(Diperoleh dari PipeStream)
Position

Mendapatkan atau mengatur posisi aliran saat ini.

(Diperoleh dari PipeStream)
ReadMode

Mengatur mode baca untuk objek AnonymousPipeServerStream. Untuk pipa anonim, mode transmisi harus Byte.

ReadTimeout

Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba membaca sebelum waktu habis.

(Diperoleh dari Stream)
SafePipeHandle

Mendapatkan handel aman untuk ujung lokal pipa yang dienkapsulasi objek PipeStream saat ini.

(Diperoleh dari PipeStream)
TransmissionMode

Mendapatkan mode transmisi pipa yang didukung oleh pipa saat ini.

WriteTimeout

Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba menulis sebelum waktu habis.

(Diperoleh dari Stream)

Metode

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

Memulai operasi baca asinkron.

(Diperoleh dari PipeStream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Memulai operasi penulisan asinkron.

(Diperoleh dari PipeStream)
CheckPipePropertyOperations()

Memverifikasi bahwa pipa dalam keadaan yang tepat untuk mendapatkan atau mengatur properti.

(Diperoleh dari PipeStream)
CheckReadOperations()

Memverifikasi bahwa pipa dalam status terhubung untuk operasi baca.

(Diperoleh dari PipeStream)
CheckWriteOperations()

Memverifikasi bahwa pipa dalam status terhubung untuk operasi tulis.

(Diperoleh dari PipeStream)
Close()

Menutup aliran saat ini dan merilis sumber daya apa pun (seperti soket dan handel file) yang terkait dengan aliran saat ini. Alih-alih memanggil metode ini, pastikan aliran dibuang dengan benar.

(Diperoleh dari Stream)
CopyTo(Stream)

Membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CopyTo(Stream, Int32)

Membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CopyToAsync(Stream)

Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CopyToAsync(Stream, CancellationToken)

Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan token pembatalan tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CopyToAsync(Stream, Int32)

Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer dan token pembatalan yang ditentukan. Kedua posisi aliran dimajukan dengan jumlah byte yang disalin.

(Diperoleh dari Stream)
CreateObjRef(Type)

Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh.

(Diperoleh dari MarshalByRefObject)
CreateWaitHandle()
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.

Mengalokasikan objek WaitHandle.

(Diperoleh dari Stream)
Dispose()

Merilis semua sumber daya yang digunakan oleh Stream.

(Diperoleh dari Stream)
Dispose(Boolean)

Merilis sumber daya yang tidak dikelola yang digunakan oleh kelas PipeStream dan secara opsional merilis sumber daya terkelola.

(Diperoleh dari PipeStream)
DisposeAsync()

Secara asinkron merilis sumber daya yang tidak dikelola yang digunakan oleh Stream.

(Diperoleh dari Stream)
DisposeLocalCopyOfClientHandle()

Menutup salinan lokal handel objek AnonymousPipeClientStream.

EndRead(IAsyncResult)

Mengakhiri permintaan baca asinkron yang tertunda.

(Diperoleh dari PipeStream)
EndWrite(IAsyncResult)

Mengakhiri permintaan tulis asinkron yang tertunda.

(Diperoleh dari PipeStream)
Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
Finalize()

Merilis sumber daya yang tidak dikelola dan melakukan operasi pembersihan lainnya sebelum instans AnonymousPipeServerStream diklaim kembali oleh pengumpulan sampah.

Flush()

Menghapus buffer untuk aliran saat ini dan menyebabkan data buffer ditulis ke perangkat yang mendasar.

(Diperoleh dari PipeStream)
FlushAsync()

Secara asinkron menghapus semua buffer untuk aliran ini dan menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar.

(Diperoleh dari Stream)
FlushAsync(CancellationToken)

Secara asinkron menghapus buffer untuk aliran saat ini dan menyebabkan data buffer ditulis ke perangkat yang mendasar.

(Diperoleh dari PipeStream)
GetAccessControl()

Mendapatkan objek PipeSecurity yang merangkum entri daftar kontrol akses (ACL) untuk pipa yang dijelaskan oleh objek PipeStream saat ini.

(Diperoleh dari PipeStream)
GetClientHandleAsString()

Mendapatkan handel objek AnonymousPipeClientStream yang terhubung sebagai string.

GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetLifetimeService()
Kedaluwarsa.

Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
GetType()

Mendapatkan Type instans saat ini.

(Diperoleh dari Object)
InitializeHandle(SafePipeHandle, Boolean, Boolean)

Menginisialisasi objek PipeStream dari objek SafePipeHandle yang ditentukan.

(Diperoleh dari PipeStream)
InitializeLifetimeService()
Kedaluwarsa.

Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini.

(Diperoleh dari MarshalByRefObject)
MemberwiseClone()

Membuat salinan dangkal dari Objectsaat ini.

(Diperoleh dari Object)
MemberwiseClone(Boolean)

Membuat salinan dangkal objek MarshalByRefObject saat ini.

(Diperoleh dari MarshalByRefObject)
ObjectInvariant()
Kedaluwarsa.

Menyediakan dukungan untuk Contract.

(Diperoleh dari Stream)
Read(Byte[], Int32, Int32)

Membaca blok byte dari aliran dan menulis data ke buffer tertentu yang dimulai pada posisi tertentu untuk panjang yang ditentukan.

(Diperoleh dari PipeStream)
Read(Span<Byte>)

Membaca urutan byte dari aliran saat ini, menulisnya ke array byte, dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

(Diperoleh dari PipeStream)
ReadAsync(Byte[], Int32, Int32)

Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

(Diperoleh dari Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Secara asinkron membaca urutan byte dari aliran saat ini ke array byte yang dimulai pada posisi tertentu untuk jumlah byte tertentu, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

(Diperoleh dari PipeStream)
ReadAsync(Memory<Byte>, CancellationToken)

Secara asinkron membaca urutan byte dari aliran saat ini, menulisnya ke rentang memori byte, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

(Diperoleh dari PipeStream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Membaca setidaknya jumlah minimum byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca.

(Diperoleh dari Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Secara asinkron membaca setidaknya jumlah minimum byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan.

(Diperoleh dari Stream)
ReadByte()

Membaca byte dari pipa.

(Diperoleh dari PipeStream)
ReadExactly(Byte[], Int32, Int32)

Membaca count jumlah byte dari aliran saat ini dan memajukan posisi dalam aliran.

(Diperoleh dari Stream)
ReadExactly(Span<Byte>)

Membaca byte dari aliran saat ini dan memajukan posisi dalam aliran hingga buffer terisi.

(Diperoleh dari Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Membaca secara asinkron count jumlah byte dari aliran saat ini, memajukan posisi dalam aliran, dan memantau permintaan pembatalan.

(Diperoleh dari Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Membaca byte secara asinkron dari aliran saat ini, memajukan posisi dalam aliran hingga buffer terisi, dan memantau permintaan pembatalan.

(Diperoleh dari Stream)
Seek(Int64, SeekOrigin)

Mengatur posisi aliran saat ini ke nilai yang ditentukan.

(Diperoleh dari PipeStream)
SetAccessControl(PipeSecurity)

Menerapkan entri daftar kontrol akses (ACL) yang ditentukan oleh objek PipeSecurity ke pipa yang ditentukan oleh objek PipeStream saat ini.

(Diperoleh dari PipeStream)
SetLength(Int64)

Mengatur panjang aliran saat ini ke nilai yang ditentukan.

(Diperoleh dari PipeStream)
ToString()

Mengembalikan string yang mewakili objek saat ini.

(Diperoleh dari Object)
WaitForPipeDrain()

Menunggu ujung pipa lainnya membaca semua byte yang dikirim.

(Diperoleh dari PipeStream)
Write(Byte[], Int32, Int32)

Menulis blok byte ke aliran saat ini menggunakan data dari buffer.

(Diperoleh dari PipeStream)
Write(ReadOnlySpan<Byte>)

Menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis.

(Diperoleh dari PipeStream)
WriteAsync(Byte[], Int32, Int32)

Secara asinkron menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis.

(Diperoleh dari Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Secara asinkron menulis jumlah byte tertentu dari array byte yang dimulai pada posisi tertentu, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan.

(Diperoleh dari PipeStream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan.

(Diperoleh dari PipeStream)
WriteByte(Byte)

Menulis byte ke aliran saat ini.

(Diperoleh dari PipeStream)

Metode Ekstensi

CopyToAsync(Stream, PipeWriter, CancellationToken)

Secara asinkron membaca byte dari Stream dan menulisnya ke PipeWriteryang ditentukan , menggunakan token pembatalan.

GetAccessControl(PipeStream)

Mengembalikan informasi keamanan aliran pipa.

SetAccessControl(PipeStream, PipeSecurity)

Mengubah atribut keamanan aliran pipa yang ada.

ConfigureAwait(IAsyncDisposable, Boolean)

Mengonfigurasi bagaimana menunggu tugas yang dikembalikan dari asinkron sekali pakai akan dilakukan.

Berlaku untuk