0comments

c# 파이프 통신 예제

그래서 여기서 배울 수 있는 것은 파이프 통신이라는 이름의 전체 이중 을 구현하는 방법이며, 오래된 기술임에도 불구하고 뇌가 죽은 것을 단순하게 원할 때가 있습니다! 물론 파이프 클라이언트/서버 코드라는 핵심은 데모 앱과 는 별개의 라이브러리에서 구현됩니다. 다음 예제에서는 NamedPipeServerStream 클래스를 사용 하 여 명명 된 파이프를 만드는 방법을 보여 줍니다. 이 예제에서는 서버 프로세스에서 4개의 스레드를 만듭니다. 각 스레드는 클라이언트 연결을 수락할 수 있습니다. 그런 다음 연결된 클라이언트 프로세스에서 서버에 파일 이름을 제공합니다. 클라이언트에 충분한 사용 권한이 있는 경우 서버 프로세스는 파일을 열고 해당 내용을 클라이언트로 다시 보냅니다. .NET 프레임워크는 IPC를 수행하는 여러 가지 방법을 제공합니다. 이 게시물에서는 익명 파이프라는 한 가지 방법을 살펴보겠습니다. 익명 파이프는 다른 방법(예: 명명된 파이프)만큼의 기능을 제공하지 않으며 네트워크를 통해 통신하는 데 사용할 수 없습니다.

그러나 동일한 컴퓨터에서 프로세스 간에 통신해야 하는 경우 익명 파이프는 오버헤드가 적기 때문에 탁월한 선택입니다. 비동기 메서드를 사용하는 명명된 파이프 클라이언트/서버의 좋은 예제를 찾기가 어려웠기 때문에 이 문서를 만들었습니다. CodeProject에서 “매드독 마이크 B”라는 훌륭한 기사를 찾았지만 .NET 3.5에서만 작동했기 때문에 .NET 4.5에 대한 새 버전을 마련해야 했습니다. 대부분의 명명된 파이프 예제는 비동기 파이프를 만들기 위해 스레딩이 결합된 동기 파이프를 기반으로 하는 것 같습니다. 내가 제공하는 방법이 올바른지 모르겠지만 몇 시간 동안 그물을 수색한 후 얻은 정보 조각이 있습니다. 서버 코드에는 호출 양식으로 다시 메시지를 보내는 이벤트 대리자도 포함되어 있으며 스레드 간 통신을 위한 스레드 세이프 메서드가 포함되어 있습니다. 그런 다음 익명PipeServerStream 클래스를 사용하여 익명 파이프 주위에 스트림을 노출합니다. 익명 파이프는 단방향이므로 양방향 통신이 필요한 경우 두 개의 파이프가 필요합니다. 익명PipeServerStream을 인스턴스화할 때 파이프 방향(안팎)을 지정할 수 있습니다. 이 예제의 클라이언트 및 서버 프로세스는 동일한 컴퓨터에서 실행되므로 NamedPipeClientStream 개체에 제공된 서버 이름은 “.”입니다. 클라이언트와 서버 프로세스가 별도의 컴퓨터에 있는 경우 “.” 서버 프로세스를 실행하는 컴퓨터의 네트워크 이름으로 대체됩니다. 우수, 사방보고 그것은 우리가이 주제의 초보자인 파이프에 대한 최고의 정보입니다.

감사! Listen() 메서드는 하나의 인수를 복용이라고 합니다 – PipeName은 나중에 재귀 함수에서 사용하기 위해 클래스 수준 var에 할당됩니다.

Comments are closed.