마. 원격 제어 대상 호스트

이번에는 원격 제어 대상 호스트를 구현합시다.

먼저 키보드와 마우스 이벤트를 래핑한 클래스를 정의합니다. 이 부분은 앞에서 만들었던 것과 대부분 비슷하므로 설명하지 않겠습니다.

[소스 9.12] WrapNative.cs

 

 

원격 제어 대상 호스트도 단일체 패턴을 적용합시다. 단일체를 기억하는 정적 멤버 필드와 이를 가져오기 할 수 있는 속성을 제공합니다.

정적 생성자에서 단일체를 생성하여 멤버에 설정합니다.

원격 제어를 요청할 때 처리를 위해 이벤트를 멤버로 선언합니다.

키보드나 마우스 이벤트를 수신하였을 때 처리할 이벤트를 멤버로 선언합니다.

키보드나 마우스 이벤트를 수신하는 서버를 위해 멤버를 선언합니다.

자신의 사각 영역을 기억하는 멤버 속성을 제공합시다.

 

 

기본 생성자는 접근 지정을 private로 설정하여 다른 클래스에서 개체를 생성할 수 없게 합니다.

자동화 요소의 루트 요소를 참조하여 사각 영역을 구합니다.

SetupServer의 원격 제어 요청이 왔을 때 처리할 이벤트 핸들러를 등록합니다.

그리고 SetupServer를 가동합니다. 여기에서는 포트 번호를 20002으로 하드 코딩할게요.

원격 제어 요청 이벤트는 By Pass 합니다.

자신의 IP를 가져오기 속성을 제공합시다.

 

키보드와 마우스 이벤트를 수신하는 서버를 가동하는 메서드를 제공합시다.

포트 번호는 20010으로 하드 코딩할게요.

res 개체의 메시지를 수신하였을 때 처리할 이벤트 핸들러를 등록합니다.

자신에게 등록한 이벤트 핸들러가 있으면 By Pass 합니다.

이벤트 종류에 따라 래핑한 API 개체의 메서드를 호출하여 프로그램 방식으로 이벤트를 발생하게 합니다.

 

멈추는 메서드를 제공합시다.

SetupServer를 닫고 키보드와 마우스 이벤트 메시지를 수신 서버도 닫습니다.

 

 

[소스 9.12] Remote.cs