원격 제어 프로그램 14. 원격 제어 컨트롤러

이제 원격 제어 컨트롤러를 만들어 봅시다. 먼저 공통으로 사용할 부분을 작성할게요.

이미지 서버 포트 접근자를 제공합시다. 여기에서 하드 코딩할게요.

원격 제어 요청 포트 접근자를 제공합시다.

이벤트 서버 포트 접근자를 제공합시다.

로컬 호스트의 디폴트 IP 주소 문자열 접근자를 제공합시다.

먼저 호스트 이름을 구합니다.

호스트 이름으로 호스트 엔트리를 구합니다.

호스트 엔트리에 있는 주소를 반복해서 확인합니다.

만약 주소 체계가 InterNetwork일 때 IP 주소 문자열을 반환하세요.

없을 때 빈 문자열을 반환하세요.

이번에는 원격 제어하는 컨트롤러를 만들어 봅시다.

원격 제어 컨트롤러는 단일체 패턴으로 정의할 것입니다. 이를 위해 정적 개체를 위한 정적 멤버 필드를 선언하세요.

단일체에 접근할 수 있게 접근자를 제공하세요.

단일체는 정적 생성자에서 생성하세요. 정적 생성자는 접근 지정자를 표시할 수 없습니다. 그리고 정적 생성자는 해당 형식을 사용하는 것보다 먼저 수행하는 것을 보장하며 개발자가 직접 호출하는 대상이 아닙니다.

단일체 외에 다른 개체를 생성할 수 없게 생성자의 접근 가시성을 private으로 지정합니다.

원격 제어 컨트롤러는 원격 제어 호스트 이미지를 수신하기 위해 이미지 수신 서버가 필요합니다.

원격 제어 컨트롤러는 제어하기 위해 키보드와 마우스 이벤트를 원격 제어 호스트에게 전송해야 합니다. 이 때 사용할 이벤트 전송 클라이언트를 사용할 것예요.

원격 제어 호스트로부터 이미지를 수신하며 이를 폼에게 전달하여 시각화할 수 있게 해 주어야 합니다.

원격 제어 호스트 IP도 필요하겠죠.

폼에서 이벤트 전송 클라이언트에 접근할 수 있게 접근자를 제공합시다.

로컬 호스트의 IP 문자열을 제공하는 접근자를 추가하세요.

원격 컨트롤러를 시작하는 메서드를 정의합시다.

입력 인자로 받은 원격 제어 호스트 IP 문자열을 설정하세요.

이미지 서버를 가동합니다.

이미지 서버가 이미지를 수신하였을 때의 이벤트를 구독 요청하세요.

이제 원격 제어 호스트에게 원격 제어하겠다고 요청합니다.

이미지 수신 이벤트 핸들러를 작성합시다.

이미지 수신 이벤트 핸들러에서는 구독자(폼)에게 이벤트를 By Pass합니다.

이벤트 클라이언트를 시작하는 메서드를 정의합시다.

이벤트 송신 클라이언트 개체를 생성합니다.

원격 제어 컨트롤러를 멈추는 메서드를 정의합시다.

이미지 서버를 닫습니다.

이미 멈춘 상태에서 다시 닫지 않게 이미지 서버를 null로 설정하세요.

다음은 이번 실습에서 작성한 소스 코드입니다.