Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Paip Dinamakan Memudahkan Komunikasi Antara Proses dalam Aplikasi Konsol C#?

Bagaimanakah Paip Dinamakan Memudahkan Komunikasi Antara Proses dalam Aplikasi Konsol C#?

DDD
DDDasal
2025-01-14 12:44:47747semak imbas

How Can Named Pipes Facilitate Inter-Process Communication in a C# Console Application?

Aplikasi Konsol C#: Komunikasi Antara Proses dengan Paip Dinamakan

Paip bernama menyediakan kaedah yang mantap dan cekap untuk komunikasi antara proses (IPC). Contoh ini menunjukkan aplikasi konsol C# menggunakan paip bernama untuk bertukar-tukar mesej antara dua proses.

Struktur Aplikasi

Kami akan membina dua aplikasi konsol: Aplikasi A dan Aplikasi B. Aplikasi A memulakan komunikasi, menghantar mesej kepada Aplikasi B, yang bertindak balas sewajarnya.

Pelayan (Aplikasi B)

  1. Paip bernama dicipta menggunakan NamedPipeServerStream.
  2. Pelayan menunggu sambungan pelanggan menggunakan WaitForConnection.
  3. StreamReader dan StreamWriter wujudkan saluran komunikasi untuk membaca dan menulis mesej.

Contoh Kod Pelayan:

<code class="language-csharp">Task.Factory.StartNew(() =>
{
    using (var server = new NamedPipeServerStream("MyPipe"))
    {
        server.WaitForConnection();
        using (var reader = new StreamReader(server))
        using (var writer = new StreamWriter(server))
        {
            while (true)
            {
                string message = reader.ReadLine();
                if (string.IsNullOrEmpty(message)) break; //Handle potential termination
                string reversedMessage = new string(message.Reverse().ToArray());
                writer.WriteLine(reversedMessage);
                writer.Flush();
            }
        }
    }
});</code>

Pelanggan (Aplikasi A)

  1. Pelanggan paip bernama dibuat menggunakan NamedPipeClientStream.
  2. Pelanggan menyambung ke pelayan.
  3. Saluran komunikasi dibuka untuk menghantar dan menerima data.

Contoh Kod Pelanggan:

<code class="language-csharp">using (var client = new NamedPipeClientStream(".", "MyPipe", PipeDirection.InOut))
{
    client.Connect();
    using (var reader = new StreamReader(client))
    using (var writer = new StreamWriter(client))
    {
        while (true)
        {
            Console.WriteLine("Enter message (or leave blank to exit):");
            string input = Console.ReadLine();
            if (string.IsNullOrEmpty(input)) break;
            writer.WriteLine(input);
            writer.Flush();
            Console.WriteLine($"Received: {reader.ReadLine()}");
        }
    }
}</code>

Proses Komunikasi

Aplikasi A bersambung ke pelayan paip bernama yang dimulakan oleh Aplikasi B. Mesej ditukar melalui saluran masing-masing. Sebagai contoh, jika Aplikasi A menghantar "Hello World", Aplikasi B membalikkannya kepada "dlroW olleH" dan menghantarnya kembali. Aplikasi A memaparkan mesej terbalik ini. Gelung berterusan sehingga Aplikasi A menghantar mesej kosong untuk menandakan penamatan.

Atas ialah kandungan terperinci Bagaimanakah Paip Dinamakan Memudahkan Komunikasi Antara Proses dalam Aplikasi Konsol C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn