c# 파이프 통신 예제

Comments 0 by
August 2, 2019

파이프는 프로세스 간 통신에 사용됩니다. 일반적으로 하나 이상의 클라이언트가 메시지를 연결하고 교환할 수 있는 단일 파이프 서버가 있습니다. 부모 프로세스의 읽기 를 통과 한 다음 핸들을 작성하지만 두 번째 (“클라이언트”) 프로세스에는 역할이 반전됩니다. 상위 프로세스가 읽는 파이프는 자식이 쓰는 파이프이고 부모 프로세스가 쓰는 파이프는 자식이 읽을 파이프입니다. 간단하고 좋은 게시물. 나는 명명 된 파이프의 기본 코드를 찾고 있었지만 요즘 앱 간에 통신 할 수있는 많은 방법이 있습니다 – 웹 소켓, HTTP, WCF, 메모리 매핑 된 파일, 심지어 파일을 사용하여 몇 가지 이름을 지정합니다. DisposeLocalCopyOfClientHandle이 호출되지 않은 경우 자식/클라이언트 프로세스가 파이프 스트림을 삭제할 때 익명 파이프가 알림을 받지 못하므로 명명된 파이프를 선택했습니다. 서버 파이프를 인스턴스화할 때 어떤 판독기를 사용해야 하는지 알려주어야 합니다. 예를 들어, 이 문자열 판독기 동작을 사용 하 여 서버를 알려줍니다.: 파이프 프로세스 간 통신에 대 한 수단을 제공 합니다. 파이프의 두 가지 유형이 있습니다 : 그래서 당신은 파이프 통신이라는 이름의 전체 양면을 구현하는 방법, 그리고 오래된 기술에도 불구하고, 당신은 단지 뭔가 두뇌 죽은 간단한 원하는 시간이있다! 그리고 물론 파이프 클라이언트 / 서버 코드라는 핵심은 데모 응용 프로그램과 는 별개의 라이브러리에서 구현됩니다. ThreadStartSever에서 문자열 형식 인덱스가 0이 아닌 1이어야하는 작은 실수가 있습니다. .NET 프레임워크는 IPC를 수행하는 여러 가지 방법을 제공합니다. 이 게시물에서는 익명 파이프라는 한 가지 방법을 살펴보겠습니다.

익명 파이프는 다른 방법(예: 명명된 파이프)만큼의 기능을 제공하지 않으며 네트워크를 통해 통신하는 데 사용할 수 없습니다. 그러나 동일한 컴퓨터에서 프로세스 간에 통신해야 하는 경우 익명 파이프는 오버헤드가 적기 때문에 탁월한 선택입니다. 매우 기본적인 파이프 서버 예제를 살펴보겠습니다. 파이프 이름은 명명된PipeServerStream 생성자에서 제공됩니다. 서버는 연결을 기다린 다음 연결된 클라이언트에 `1`이라는 단일 바이트를 보냅니다. 그런 다음 클라이언트가 바이트로 응답하고 콘솔에서 인쇄할 때까지 기다립니다. 수신기는 물론 비동기이므로 DataReceived 이벤트를 적절한 스레드(예: UI 스레드)로 마샬링하려면 주의해야 합니다. 비동기 메서드를 사용하는 명명된 파이프 클라이언트/서버의 좋은 예제를 찾기가 어려웠기 때문에 이 문서를 만들었습니다.

CodeProject에서 “매드독 마이크 B”라는 훌륭한 기사를 찾았지만 .NET 3.5에서만 작동했기 때문에 .NET 4.5에 대한 새 버전을 마련해야 했습니다. 대부분의 명명된 파이프 예제는 비동기 파이프를 만들기 위해 스레딩이 결합된 동기 파이프를 기반으로 하는 것 같습니다. 내가 제공하는 방법이 올바른지 모르겠지만 몇 시간 동안 그물을 수색한 후 얻은 정보 조각이 있습니다. 익명 파이프는 로컬 컴퓨터에서 프로세스 간 통신을 제공합니다. 익명 파이프는 명명된 파이프보다 오버헤드가 적지만 제한된 서비스를 제공합니다.