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

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

DDD
DDD원래의
2025-01-14 12:44:47747검색

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

C# 콘솔 애플리케이션: 명명된 파이프를 사용한 프로세스 간 통신

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

애플리케이션 구조

애플리케이션 A와 애플리케이션 B라는 두 개의 콘솔 애플리케이션을 구축하겠습니다. 애플리케이션 A는 통신을 시작하고 애플리케이션 B에 메시지를 보내 그에 따라 응답합니다.

서버(애플리케이션 B)

  1. NamedPipeServerStream을 사용하여 명명된 파이프를 만듭니다.
  2. 서버는 WaitForConnection을 사용하여 클라이언트 연결을 기다립니다.
  3. StreamReaderStreamWriter는 메시지 읽기 및 쓰기를 위한 커뮤니케이션 채널을 구축합니다.

서버 코드 예:

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

클라이언트(애플리케이션 A)

  1. Named Pipe 클라이언트는 NamedPipeClientStream을 사용하여 생성됩니다.
  2. 클라이언트가 서버에 연결됩니다.
  3. 데이터 송수신을 위한 통신 채널이 열려 있습니다.

클라이언트 코드 예:

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

소통과정

애플리케이션 A는 애플리케이션 B가 시작한 명명된 파이프 서버에 연결됩니다. 메시지는 해당 채널을 통해 교환됩니다. 예를 들어, Application A가 "Hello World"를 보내면 Application B는 이를 "dlroW olleH"로 바꾸어 다시 보냅니다. 애플리케이션 A는 이 반대 메시지를 표시합니다. 애플리케이션 A가 종료 신호를 보내기 위해 빈 메시지를 보낼 때까지 루프가 계속됩니다.

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

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