원격 제어 프로그램 7. 원격 제어 – 화면 전송

이번에는 원격 제어를 허용한 호스트의 전체 화면을 제어하는 컨트롤러에게 주기적으로 화면을 전송해야 합니다. 이 부분을 담당하는 ImageClient를 작성합시다.

전송에 사용할 소켓을 멤버 필드로 선언하세요.

생성자에서는 이미지를 수신할 컨트롤러의 IP와 포트 번호를 입력 인자로 받습니다.

소켓을 생성하세요.

이미지를 수신할 컨트롤로와 연결합니다.

이미지를 전송하는 메서드를 정의합시다.

이미지를 선형적으로 보내기 위해 메모리 스트림 개체를 생성합니다.

이미지 정보를 JPEG 포멧으로 스트림 개체에 저장합니다.

그리고 메모리 스트림에 이미지를 저장한 버퍼를 얻어옵니다.

소켓으로 전송할 이미지 버퍼의 길이를 byte 배열 개체로 만드세요.

먼저 이미지 버퍼의 길이를 전송합니다.

그리고 이미지를 전송합니다.

전송이 끝나면 소켓을 닫습니다.

예외가 발생하면 응용을 끝내기로 할게요. 이 프로그램은 원격 제어 프로그램을 만드는 방법을 다루고 있으면 상품 수준으로 작성한 것은 아닙니다. 상품 수준으로 만들기 위해서는 다양한 조건으로 테스트를 수행하고 비정상적인 버그들을 잡는 과정이 필요합니다.

이미지를 보내는 부분은 비동기로 처리할 수 있게 합시다. 이를 위해 대리자를 정의할게요.

대리자 개체를 생성하여 비동기로 수행할 수 있게 BeginInvoke 메서드를 호출하세요.

이미지 전송 클라이언트를 닫는 메서드도 제공합시다.

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