>백엔드 개발 >C++ >명명된 파이프는 간단한 C# 콘솔 애플리케이션에서 프로세스 간 통신을 어떻게 촉진할 수 있습니까?

명명된 파이프는 간단한 C# 콘솔 애플리케이션에서 프로세스 간 통신을 어떻게 촉진할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-14 12:46:48572검색

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

Named Pipe를 보여주는 간단한 C# 콘솔 애플리케이션

명명된 파이프는 단일 시스템 내에서 IPC(프로세스 간 통신)를 위한 강력한 방법을 제공합니다. 이 예에서는 명명된 파이프를 사용하여 두 프로세스가 메시지를 교환하는 기본 C# 콘솔 애플리케이션을 보여줍니다.

애플리케이션 구조

애플리케이션은 두 가지 프로그램으로 구성됩니다. 하나는 메시지를 보내 통신을 시작하고 다른 하나는 응답합니다. 지속적인 메시지 교환을 위해 둘 다 동시에 실행됩니다.

코드 구현

다음 C# 코드는 구현을 보여줍니다.

<code class="language-csharp">using System;
using System.IO;
using System.IO.Pipes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleAppIPC
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initiate the server process
            StartServer();
            Task.Delay(1000).Wait(); // Brief delay to ensure server is ready

            // Client-side connection and communication
            using (var client = new NamedPipeClientStream("PipesOfPiece"))
            {
                client.Connect();
                using (var reader = new StreamReader(client))
                using (var writer = new StreamWriter(client))
                {
                    while (true)
                    {
                        string input = Console.ReadLine();
                        if (string.IsNullOrEmpty(input)) break;
                        writer.WriteLine(input);
                        writer.Flush();
                        Console.WriteLine(reader.ReadLine());
                    }
                }
            }
        }

        static void StartServer()
        {
            Task.Factory.StartNew(() =>
            {
                using (var server = new NamedPipeServerStream("PipesOfPiece"))
                {
                    server.WaitForConnection();
                    using (var reader = new StreamReader(server))
                    using (var writer = new StreamWriter(server))
                    {
                        while (true)
                        {
                            string line = reader.ReadLine();
                            writer.WriteLine(string.Join("", line.Reverse()));
                            writer.Flush();
                        }
                    }
                }
            });
        }
    }
}</code>

운영 흐름

클라이언트는 명명된 파이프 "PipesOfPiece"에 연결하여 서버와의 연결을 설정합니다. 메시지는 StreamWriter을 통해 전송되고 StreamReader을 통해 수신됩니다. 이 예에서 서버는 수신된 메시지를 클라이언트에 다시 보내기 전에 취소하여 간단한 통신 패턴을 보여줍니다. 그러면 클라이언트는 반전된 메시지를 표시합니다.

위 내용은 명명된 파이프는 간단한 C# 콘솔 애플리케이션에서 프로세스 간 통신을 어떻게 촉진할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.