라. 원격 제어 컨트롤러

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

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

단일체 개체를 참조할 수 있는 정적 속성을 제공합니다.

정적 생성자에서 단일체를 생성합니다.

그리고 기본 생성자는 private으로 접근 설정하여 다른 곳에서 개체를 생성할 수 없게 합니다.

이미지는 수신하므로 ImageServer 개체를 위한 멤버를 선언하세요.

키보드와 마우스 이벤트는 전송하므로 SendEventClient 개체를 위한 멤버를 선언하세요.

이미지를 수신하였을 때 처리를 위한 이벤트를 멤버로 선언합시다.

상대측 IP를 기억하는 멤버를 선언합시다.

SendEventClient 개체를 가져오기 할 수 있는 속성을 제공합니다.

자신의 IP 주소를 구하는 속성을 제공합시다.

먼저 호스트 이름을 얻어오고 호스트 목록 개체를 구합니다.

호스트 목록 개체의 주소 목록의 각 개체를 조사하여 주소 패밀리가 IPv4인 것을 찾습니다.

없으면 빈 문자열을 반환합니다.

원격 제어 컨트롤로를 가동하는 메서드를 제공합시다.

입력 인자로 받은 상대측 IP를 멤버에 설정합니다.

이미지 서버를 가동합니다. 여기에서는 20004 포트로 하드 코딩할게요.

이미지를 수신하였을 때 처리할 이벤트 핸들러를 등록합니다.

SetupClient를 설정합니다. 여기에서도 포트 번호는 20002로 하드 코딩할게요.

이미지를 수신한 이벤트는 구독자에게 By Pass 합니다.

이벤트 전송 클라이언트를 설정하는 메서드를 추가합니다.

SendEventClient 개체를 생성합니다. 포트 번호는  20010으로 하드 코딩할게요.

 

서버의 가동을 멈추는 메서드를 제공합니다.

이미지 서버의 Close 메서드를 호출하여 해제화합니다.

그리고 img_server를 null로 설정합니다.

 

[소스 9.11] Controller.cs