C# 콘솔 애플리케이션: 명명된 파이프를 사용한 프로세스 간 통신
명명된 파이프는 프로세스 간 통신(IPC)을 위한 강력하고 효율적인 방법을 제공합니다. 이 예에서는 명명된 파이프를 사용하여 두 프로세스 간에 메시지를 교환하는 C# 콘솔 애플리케이션을 보여줍니다.
애플리케이션 구조
애플리케이션 A와 애플리케이션 B라는 두 개의 콘솔 애플리케이션을 구축하겠습니다. 애플리케이션 A는 통신을 시작하고 애플리케이션 B에 메시지를 보내 그에 따라 응답합니다.
서버(애플리케이션 B)
NamedPipeServerStream
을 사용하여 명명된 파이프를 만듭니다.WaitForConnection
을 사용하여 클라이언트 연결을 기다립니다.StreamReader
과 StreamWriter
는 메시지 읽기 및 쓰기를 위한 커뮤니케이션 채널을 구축합니다.서버 코드 예:
<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)
NamedPipeClientStream
을 사용하여 생성됩니다.클라이언트 코드 예:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!