박종은 * 이유동 * 이홍창 ** 이명준 *** VNC-Based Screen Sharing System for Android Smart Devices Jong-Eun Park* You-Dong Lee* Hong-Chang Lee** Myung-Joon Lee*** 이논문은 2011 년도울산대학교연구비에의하여연구되었음 요 약 스마트폰과스마트패드는편리성과휴대성을비롯한많은장점들과우수한성능, 풍부한어플리케이션을바탕으로정보를효과적으로관리할수있다. 이러한스마트기기의활용빈도가늘어나면서사용자들은스마트기기를이용하여다양한정보를관리하고있다. 최근회의, 세미나중에스마트기기에저장된정보를활용하고시각적으로공유하는사례가빈번히발생하고있지만작은크기의디스플레이로인하여효과적으로정보를교환하기에는근본적인어려움이있다. 본논문에서는다수의안드로이드스마트기기의화면을하나의대형디스플레이장치를통하여효과적으로공유하는기법을제안하고이를바탕으로스마트기기화면공유시스템을개발하였다. 개발된시스템은여러스마트기기화면을통합하여 PC 에연결된대형디스플레이장치에서보여준다. 또한, 효과적인공유를위하여대형디스플레이장치에서출력되는스마트기기화면의개수와그화면크기를스마트기기와 PC 에서직접제어하는기능을제공한다. ABSTRACT Smartphones and smartpads have a lot of advantages such as high convenience and portability. Also, they can effectively manage enormous amounts of information based on their high performance and plentiful applications. As such devices have been frequently used, many users manage various types of information using the devices. Recently, during conferences or seminars, smart device users often try to utilize stored resources on their devices and present them visually. Unfortunately, since smart devices have small displays, there is an essential difficulty in visual sharing of information. In this paper, we propose a method which integrates screens of several android smart devices and supports sharing of the integrated screen through a large display, presenting a screen sharing system for android smart devices. The developed system integrates display screens of several smart devices into a screen and shows the integrated screen through a large display connected to a desktop computer. In addition, to support the effective sharing of screens, the system provides functions for adjusting the number and the size of screens on a large display. The functions are controlled on a smart device and/or a desktop computer. 키워드 VNC, Droid VNC Server, 화면공유, 대형디스플레이장치, 안드로이드 Key word VNC, Droid VNC Server, Screen Sharing, Large display devices, Android *** 준회원 : 울산대학교컴퓨터정보통신공학부 *** 정회원 : 울산대학교컴퓨터정보통신공학부 *** 정회원 : 울산대학교전기공학부교수 ( 교신저자, mjlee@ulsan.ac.kr) 접수일자 : 2012. 02. 02 심사완료일자 : 2012. 02. 06 Open Access http://dx.doi.org/10.6109/jkiice.2012.16.3.522 This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License(http://creativecommons.org/li-censes/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.
Ⅰ. 서론회의, 학술대회, 강의등한정된장소에서여러사람들이시각적정보를공유해야하는상황에서대형디스플레이장치는가장흔하게쓰이는장치이다. 대부분 PC 와연동하여 PC에저장된정보를보여주는데이용되며, 사람들이대형디스플레이에서보이는화면을보면서서로의의견을교환하고의사를쉽게결정할수있도록활용되고있다 [1,2,3]. 최근다방면에서활용되는스마트기기들은편리성과휴대성을비롯한많은장점들과우수한성능, 다양한기능을제공하여활용가치가매우높다. 그리고이동환경에적합한작은크기로인하여언제, 어디서든휴대하여다양한상황에서적절하게사용된다. 이러한이유로보급과활용빈도가증가되어사람들이방대한정보를손쉽게수집하고수집된정보를효과적으로관리할수있도록한다. 최근회의, 세미나에서스마트기기에저장된정보를활용하고시각적으로공유하는사례가빈번히발생하고있다. 하지만스마트기기의작은디스플레이크기로인하여효과적으로정보를공유하기에는불편함이있다. 따라서스마트기기의시각적정보를여러사람들과효과적으로공유하는시스템이지원된다면매우편리할것이다본논문에서는다수의안드로이드스마트기기의화면을대형디스플레이장치에서효과적으로공유할수있는기법을제안하고이를바탕으로개발된스마트기기화면공유시스템에대해기술한다. 개발된시스템은원격지 PC를제어하는데널리사용되는오픈소스소프트웨어인 VNC(Virtual Network Computing)[4] 를기반으로구현되었으며, PC에서동작하는서버와스마트기기기반의클라이언트로구성된다. 서버는스마트기기의화면을 PC에연결된대형디스플레이서보여줄수있는환경을지원하며, 서버에접속한스마트기기의화면의개수와크기를손쉽게제어할수있는기능을제공하여다수의스마트기기화면을효과적으로관리할수있다. 클라이언트는스마트기기의화면을서버로전송하고, 서버를통해디스플레이장치에출력된스마트기기의화면크기를직접제어하는기능을제공하며관리자에의해서만실행된다. 또한, 관리자권한양도, 화면의특정부분강조, 스 마트기기에부착된카메라의화면전송등다양한기능을제공한다. 본논문의구성은다음과같다. 서론에이어 2장에서는 VNC와스마트기기화면공유시스템에대한배경지식을다루고, 3장에서는다수의스마트기기화면공유를위한기법을제시하며, 4장에서는제시된기법을바탕으로개발한시스템에대해설명하고, 5장에서는개발된시스템과타시스템을비교하여설명한다. 마지막으로 6장에서는결론을다룬다. Ⅱ. 배경지식 2.1. 스마트기기의 VNC 시스템 VNC는원격지 PC를제어할수있는그래픽기반의시스템이다. 1999년 AT&T에서오픈소스로제공되어다양한플랫폼에서동작하는 VNC 기반시스템이등장하였다 [5]. 주로사용자가위치한로컬환경에서원격지에있는 PC를제어하기위한목적으로개발되었으며대표적인시스템은 Tiger VNC[6], Ultra VNC[7], Real VNC[8] 등이있다. VNC는서버와클라이언트로구성되며, 서버는화면정보를클라이언트에게전달하는역할을한다. 클라이언트는 VNC 서버로부터전달받은화면정보를사용자가볼수있도록표현하고, 사용자의입력을서버로전송하는역할을한다. 이러한서버와클라이언트의통신은 RFB(Remote Framebuffer)[9] 프로토콜을기반으로수행된다. 최근에는스마트기기에서동작하는 VNC 기반의여러시스템이개발되었다. 대부분스마트기기에서원격지 PC를제어할수있는형태로제공되며, 대표적인어플리케이션은 Pocketcloud[10], Remote VNC[11] 등이있다. 이러한어플리케이션은 VNC 클라이언트로개발되어기존의 VNC 시스템과유사한형태로동작한다. 즉, 스마트기기에서 VNC 서버가설치된원격지 PC를제어할수있는기능을제공한다. 이러한이유로이동환경에서편리하게원격지 PC의작업진행정도를확인하거나새로운작업명령을지시할수있다. 그리고이와같은기능을효과적으로지원하기위하여 PC의높은해상도를스마트기기화면에서충분히표현하기위한연구도활발히진행되고있다.[12,13] 523
한국정보통신학회논문지제 16 권제 3 호 2.2. 스마트기기화면공유시스템최근에는스마트기기의정보를시각적으로많은사람과공유하는상황이많아짐으로써스마트기기를 PC에서제어할수있는시스템이등장하고있다. 이러한시스템은작은디스플레이의스마트기기화면을 PC와연결되는대형디스플레이장치에서실시간으로보여줌으로써, 스마트기기의시각적정보를효과적으로공유할수있다. 특히, 스마트기기의디스플레이고장, 터치고장등치명적인문제가발생할때에도유용하게사용된다. 이러한기능을제공하는대표적인시스템은 VNC 기반의 Droid VNC Server[14] 와 USB 케이블이용하는 ASM(Android Screen Monitor)[15] 등이있다. Droid VNC Server는안드로이드플랫폼의스마트기기에서동작하는 VNC 기반의어플리케이션으로 RFB 프로토콜을지원한다. 구조는스마트기기의화면을전송하는 Droid VNC Server와 Tiger VNC를확장한 PC 환경의클라이언트로구성된다. Droid VNC Server는스마트기기에서백그라운드서비스로동작하며프레임버퍼의화면정보를 PC의클라이언트로전송한다. 클라이언트에서는전송된스마트기기의화면을실시간으로확인하며스마트기기를제어하는기능을제공한다. 그리고 PC의키보드를이용하여스마트기기의메뉴, 전화등의버튼을입력하는기능을지원한다. ASM은 ADB(Android Debug Bridge)[16] 의도구로안드로이드기반의스마트기기화면을 PC에서제어하기위한목적으로개발되었다. ADB는안드로이드기반스마트기기와통신하며스마트기기의디버깅을위한클라이언트-서버프로그램이다. 통신방식은 PC와스마트기기간 USB 연결을통해수행되며 PC의 ADB 클라이언트를통해스마트기기를제어한다. 이러한 ASM은화면공유를위하여스마트기기에별도의어플리케이션을설치하지않기때문에스마트기기기반의어플리케이션개발발표등의상황에서유용하게사용되고있다. Ⅲ. VNC 기반의스마트기기화면공유기법 3.1. 기법및시스템구성기존의화면공유를위한방법은스마트기기가서버가되어화면정보를전송하고, PC의클라이언트에서전송된화면을출력하는형태를보인다. 이러한형태에서여러스마트기기화면을공유하기위하여 Droid VNC Server는스마트기기수만큼 PC 클라이언트가수작업으로실행되어야하며, ASM 역시스마트기기수만큼 USB 케이블을연결해야한다. 이는대단히비효율적인작업이며, 다수의스마트기기를관리하기에도불편하다. 따라서다수의스마트기기화면을하나의대형디스플레이에서효과적으로보여줄수있는방법과이를지원하는시스템이필요하다. 본연구에서는다수의안드로이드스마트기기화면을효과적으로대형디스플레이장치에서보여주기위하여그림 1과같은형태로동작하는기법을제안한다. 그림 1. 다수의스마트기기화면공유방식 Fig. 1 Method of Screen Sharing for Smart devices 그림 1에서는하나의서버와여러대의스마트기기가서로통신하며, 스마트기기는화면을서버로전송한다. 서버는수신된화면을연결된대형디스플레이장치에서여러가지형태로보여준다. 이러한형태는다수의스마트기기가하나의서버를통해관리될수있기때문에기존의화면공유방법의문제점을해결할수있다. 그림 2는제안한형태에서동작하는시스템의내부구조를보여준다. 524
그림 2. 시스템구조 Fig. 2 Structure of the Proposed System 그림2에서서버와클라이언트는화면전송과출력을위하여 VNC를이용한다. 서버는 VNC 클라이언트개발을지원하는 Java VNC Viewer를통해화면정보를수신하여출력한다. 클라이언트는서버에화면을전송하기위하여 Droid VNC Server를기반으로한다. 서버는연결된여러스마트기기의화면을효과적으로보여주는멀티뷰어 (Multi Viewer) 를가진다. 멀티뷰어는서버에접속한다수의스마트기기화면을통합하여보여주며, 상황에맞는크기및배치조절기능을지원한다. 연결모듈 (Connection Module) 은클라이언트와통신하며클라이언트의요청을처리한다. 그리고클라이언트가접속하면스레드를생성하여 Java VNC Viewer를실행한다. 실행된 Java VNC Viewer 는스마트기기화면을전송받아뷰어 (Viewer) 에출력하고, 뷰어는멀티뷰어에의해관리되며사용자에게스마트기기화면을보여준다. 클라이언트의 GUI는사용자와상호작용하며, 사용자로부터전달되는요청을제어모듈 (Control Module) 로전달한다. 제어모듈은 GUI를전환하거나서버로전송되는요청을클라이언트의연결모듈로전송한다. 그리고서버와연결이완료되면화면전송을위하여스마트기기백그라운드에서 Droid VNC Server를동작시킨다. Droid VNC Server는프레임버퍼에접근하여화면정보를실시간으로서버로전송한다. 이러한클라이언트와서버사이에서화면을전송하고서비스를종료하기위한과정은다음과같다. (1) 사용자가클라이언트의 GUI를통해서버와연결을요청 (2) 클라이언트의연결모듈에서서버와연결을하고백그라운드에서 Droid VNC Server를동작시킴 (3) 클라이언트의접속을확인한서버는스레드를생성하여 Java VNC Viewer를통해클라이언트에서실행된 Droid VNC Server와연결 (4) 연결된 VNC 간에 FRB 프로토콜을통해화면정보를서버에서수신하고수신된화면을멀티뷰어로출력 (5) 사용자가클라이언트의 GUI를통해서버와연결종료를요청 (6) 클라이언트의연결모듈에서종료요청을서버로전송하고백그라운드에서실행된 Droid VNC Server를종료시킴 (7) 서버에서종료요청을확인하고, 해당클라이언트의스레드를종료 3.2. 효과적인화면공유서비스서버는여러클라이언트의접속을처리하고, 클라이언트로부터전송되는화면을상황에따라배치, 크기등을조절하여화면공유상황을효과적으로지원하는것이바람직하다. 그리고클라이언트의접근을제한하거나, 강제로종료시키는등의하여보안상의문제를다룰수있어야한다. 본논문에서는효과적인화면공유를위한서비스를표1과같이정의하였다. 표 1. 화면공유서비스목록 Table. 1 List of Screen Sharing Services 범주 서버 클라이언트 기능 화면제어서비스 - 멀티뷰어배치조절 - 스마트기기화면크기조절 클라이언트관리서비스 - 클라이언트접속종료 - 관리자권한양도 - 관리자권한제거 통신서비스 - 서버연결 - 접속종료 - 클라이언트목록요청 화면관련서비스 - 화면강조 - 카메라뷰어 525
한국정보통신학회논문지제 16 권제 3 호 서버에서는화면제어서비스와클라이언트관리서비스를제공하여로컬환경에서손쉽게다수의클라이언트와그화면을제어할수있다. 클라이언트는효과적인화면공유를위한화면관련서비스와통신서비스를제공한다. 통신서비스는클라이언트에서도서버의서비스가실행되도록지원한다. 이를위하여클라이언트에서서버의서비스를요청하는프로토콜메시지를표2 와같이정의하였다. 표 2. 화면공유프로토콜메시지 Table. 2 Protocol Message for Screen Sharing 요청정보 Connect Disconnect Ask_Wiser Ask_Closer Change_Manager Self_Mode Ask_Client_List Comparing Arrange Purge 서버접속 서버접속종료 특정화면확대 특정화면축소 관리자권한양도 관리자기능중지 설명 모든클라이언트정보요청 멀티뷰어의모든화면을동일한크기로배치 멀티뷰어의모둔화면을기본형태로배치 특정클라이언트강퇴 표2에서정의된메시지를기반으로통신하는시스템은여러클라이언트의중복요청으로인하여화면과클라이언트의관리가어려워지는문제가발생할수있다. 이러한문제를해결하기위하여클라이언트의역할을설정하고, 그역할에따라수행되는기능에제한을두었다. 역할은관리자와일반사용자로구분되며, 관리자역할의클라이언트에서서버로프로토콜메시지를전송하여서버의서비스가수행되도록하였다. Ⅳ. VNC 기반의스마트기기화면공유시스템의개발 4.1. 화면공유서버서버는클라이언트의연결및다양한요청을처리하기위하여 Java 소켓을기반으로구현하였다. 화면수신은 Java VNC Viewer를이용하여연결된대형디스플레이장치에보여준다. Java VNC Viewer는 RFB 프로토콜을교환하는 FtbProto 클래스, 수신된화면을보여주는 VncViewer 클래스등의화면공유에있어서필수적인클래스를제공한다. VncViewer 클래스는수신된화면을프레임 (JFrame) 에출력하도록구현되어있다. 이는하나의화면을출력하기에는적합하지만다수의화면을보여주기에는프레임의수가많아짐으로효과적인화면공유를지원하지못한다. 이를위하여 VncViewer 클래스를프레임안에서프레임의역할을지원하는인터널프레임 (JInternalFrame) 에화면이출력이되도록변경하였다. 그림 3은변경된소스코드의일부를보여준다. JinternalFrame jf = ne JinternalFrame(userName, ture, ture, ture, ture);... fr.getcontenpane().add(vc); fr.setbounds(x,y,width,height); fr.setvisible(true); // 멀티뷰어에인터널프레임을삽입 canvaspanel.add(fr); 그림 3. 다중화면을지원하는변경된 Vnc Viewer 클래스 Fig. 3 Modified Vnc Viewer Class Supporting Multi Screen 변경한 VncViewer 클래스를이용하며, 손쉬운화면제어를지원하는서비스와클라이언트관리서비스를위하여표 3과같은역할을수행하는클래스를구현하였다. 526
Server 표 3. 개발된서버클래스 Table. 3 Developed Classes in the Server 클래스 ControlFrame ClientManager ClientSocket 역할 서버자원을초기화하고클라이언트의접속을처리한다. 화면제어서비스, 클라이언트관리서비스를제공하는인터페이스와그기능을수행 접속한클라이언트를관리하며, 관리자와일반사용자를구분한다. Java VNC Viewer 를동작시키며, 클라이언트와의연결상태와화면공유서비스의프로토콜을처리한다. Protocol 프로토콜의정보를제공한다. 표 3에서 Server 클래스는서버자원을초기화하는과정에서서버의인터페이스를구성하며멀티뷰어를생성하여클라이언트를기다린다. Protocol 클래스와 ClientSocket 클래스는통신모듈을구성하며, 클라이언트와연결되어프로토콜메시지를처리한다. Server 클래스와통신모듈을이용하여클라이언트의화면을수신하는과정은다음과같다. (1) Server 클래스가동작하여클라이언트를기다림 (2) 클라이언트가접속하면 Server 클래스에서클라이언트를처리하기위한 ClientSocket을스레드로실행 (3) ClientSocket 클래스에서클라이언트의프로토콜메시지를기다림 (4) 클라이언트가 Connect 프로토콜메시지를전송 (5) ClientSocket 클래스에서 Protocol 클래스를참조하여수신된메시지를확인 (6) ClientSocket 클래스에서화면수신을위하여 Java Vnc Viewer의 VncViewer 클래스의객체를생성 (7) 생성된 VncViewer 객체는화면수신을위한작업을수행하고클라이언트의화면을 Server 클래스의멀티뷰어로보낸다. public class ClientSocket extends Thread{... if(message.equals(protocol.connect)){ //ip 와사용자정보를저장 String ip = socket.getinetaddress().gethostn String username = br.readline(); // 클라이언트관리와로그, 제어를위한설정 clientmanager.add(socket, username); controlframe.adduser(username); controlframe.printlog("[ "+username+" ] 님이접속했습니다."); // 접속완료메시지전송 pw.println(protocol.connect_success) //Java VNC Viewer 를실행 vnc = new VncViewer(vncCanvas, ip); vnc.init(screen_width, scrren_hight, px, py);... 그림 4. Java VNC Viewer 실행처리구현 Fig. 4 Implementation of Handling Java VNC Viewer execution on the Server 그림3에서 VncViewer 클래스는화면수신을처리하며멀티뷰어에출력될위치와크기를설정한다. 이는 ControlFrame에서멀티뷰어에출력되는모든뷰어의출력지점과크기를저장하고, 비교를통해수행될수있도록하였다. 멀티뷰어에서수행되는화면제어서비스는서버에서직접수행되거나클라이언트로부터전송된프로토콜메시지에의해서실행된다. 이를위하여 Control Frame 클래스에기능수행에필요한메소드를표 4와같이정의하고, 사용자의요청이나프로토콜메시지에따라처리되도록하였다. 표 4. 화면제어서비스를지원하는메소드 Table. 4 Methods Supporting for Screen Controlling Services 메소드 void wiser() 역할 특정클라이언트화면확대 그림 4는이러한동작과정을구현한소스코드의일부를보여준다. void closer() void comparing() 특정클라이언트화면축소 2개이상의화면을동일한크기로멀티뷰어에배치 527
한국정보통신학회논문지제 16 권제 3 호 표 4의메소드는그림 5와같이구현하였으며, Client Manager 클래스의객체에서해당클라이언트를불러와서인터널프레임의크기를변경하기위하여정의한 adjustscrrensize() 메소드를통하여화면제어서비스를실행한다. // 확대화면구현 public void wiser(){ // 해당클라이언트를불러옴 clientscoket = clientmanager.getclient(index); // 가로길이는멀티뷰어 /3, 높이는멀티뷰어높이 // 출력지점은 X,Y 좌표가 0으로설정 clientscoket.getvnc().adjustscrrensize( frame_width/3, frame_height, 0, 0); } // 확대축소구현 public void close(){ // 해당클라이언트를불러옴 clientscoket = clientmanager.getclient(index); // 출력지점과가로, 세로크기가원래크기로설정 clientscoket.getvnc().adjustscrrensize( screen_width, screen_height, px, py); } 그림 5. 화면제어서비스의구현 Fig. 5 Implementation of Screen Controlling Services 4.2. 화면공유클라이언트클라이언트에서화면정보를서버로전달하기위하여 Droid VNC Server를이용하였다. Droid VNC Server 는스마트기기의프레임버퍼에접근하여화면정보를전송하는데, 프레임버퍼는안드로이드의보안상의문제로접근이제한되어있다. 따라서 Droid VNC Server를실행하기위해서는프레임버퍼에접근하는방법이우선적으로시행되어야하므로스마트기기루팅 (Rooting)[17] 이필요하다. 루팅은리눅스를기반으로하는안드로이드플랫폼에서디바이스, 파일시스템, 프레임버퍼등에접근하기위하여관리자권한을얻는행위를말한다. Droid VNC Server는화면전송을위하여초기화작업을수행하는 MainApplication 클래스, 백그라운드에서화면을실시간으로전송하는 ServerManager 클래스등을제공한다. MainApplication 클래스는프레임버퍼의화면정보를읽기위한유틸리티파일들을스마트기기파일시스템에복사한다. 유틸리티파일들은루팅된스마트기기에서실행되는다양한리눅스명령어들과프레임버퍼에접근하여화면정보를전송하는 androidvncserver[18] 등이있다. 이러한유틸리티들은 ServerManager 클래스와상호작용하여화면전송에관련된작업을수행한다. Droid VNC Server를이용하여화면을전송하는클라이언트는서버와통신하며수행되는여러서비스를제공한다. 이를위하여표 5와같은클래스를정의하고, 이러한서비스를지원하는 GUI를구현하였다. 표 5. 화면공유서비스를위한클래스 Table. 5 Classes for Screen Sharing Services 클래스 CameraActivity ControlActivity HighlighterActivity DialogActivity ClientSocket 역할 스마트기기의카메라를동작시켜카메라의화면을보여준다. 멀티뷰어를제어하기위한 GUI 로사용자로부터액션을입력받는다. 사용자로부터화면을강조하기위한액션을입력받고, 그에관련된서비스를제공한다. 대화상자로출력되어상황에맞는 GUI 클래스를실행한다. 서버와연동되어연결상태및각종요청을처리한다. Protocol 프로토콜의정보를제공한다. HighterActivity에서는사용자와상호작용하며, 현재의화면에서다양한효과를부여하는화면강조서비스를제공한다. 화면강조서비스는사용자의터치를이용하여화면의특정부분에색상을넣거나, 도형을그리도록지원한다. 이러한기능을구현하기위하여현재의화면위에투명한화면이배치되도록하였다. 사용자는투명한화면을통해현재의화면을보고강조기능은그림 6과같이투명한화면에서수행된다. 528
비스와화면제어서비스의손쉬운실행을지원하는인터페이스로화면제어서비스의요청을멀티뷰어로전달한다. 화면제어서비스는특정클라이언트의확대및축소, 2개이상의화면을동일한크기로변경하는비교화면기능을지원한다. 멀티뷰어는제어창에의해요청된화면제어서비스를즉각적으로그림 8과같이반영하여스마트기기화면의배치와크기를조절한다. 그림 6. 강조기능기법 Fig. 6 Technique for Highlight Function Ⅴ. 구현결과및기능비교 5.1. 구현결과개발된시스템은하나의서버에서수신된다수의스마트기기화면을대형디스플레이장치에서효과적으로보여줌으로써이를통해스마트기기에저장된정보를많은사람들과시각적으로공유하도록지원한다. 개발된서버에서는멀티뷰어를통해다수의스마트기기화면을분할하여보여주고, 로그와제어서비스를통해효과적으로클라이언트를관리할수있다. 그림 7은개발된서버의모습을보여준다. 그림 7. 개발된서버의인터페이스 Fig. 7 Interface of the Developed Server 그림 6에서로그창은클라이언트의연결과요청에관련된로그를보여준다. 제어창은클라이언트관리서 그림 8. 화면제어서비스의화면 Fig. 8 Example of Screen Controlling Service 529
한국정보통신학회논문지제 16 권제 3 호 개발된클라이언트는스마트기기의백그라운드에서실행되어화면을서버로전송하며, 서버와연동하여화면제어, 클라이언트관리서비스를제공한다. 그리고화면관련서비스를지원하여시각적자료를보다효율적으로공유할수있다. 그림 9는구현된클라이언트에서수행되는강조기능, 클라이언트관리및제어화면을보여준다. 그림 9. 다양한클라이언트기능 Fig. 9 Various Client Functions 그림 10은개발된시스템을활용하여스마트기기의자료를시각적으로공유하는모습을보여준다. 5.2. 타시스템과의기능비교 Droid VNC Server는 VNC를기반으로하는대표적인스마트기기화면공유시스템으로 RFB 프로토콜을통해효과적인스마트기기제어서비스를제공한다. 하지만다수의화면을공유하기위해서는 PC에서구동되는클라이언트가스마트기기수만큼수작업으로실행되어야하므로관리측면에서비효율적이며, 다중사용자화면을지원하지않는다. ASM은 ADB와연동되어동작하는스마트기기화면공유시스템으로루팅을하지않아도실행가능한장점이있다. 그러나 USB 케이블을이용해야지만통신이가능한단점과함께 Droid VNC Server와마찬가지로다중사용자화면을보여주지못하기때문에다양한상황에서활용되기에는많은어려움이따른다. 본연구에서개발된시스템은다중사용자화면과함께화면관리서비스를제공한다. 따라서작은디스플레이를가지는스마트기기의불편함을해소하고, 여러사람들간에다수의스마트기기의화면을효과적으로공유할수있다. 그리고안드로이드정책상프레임버퍼에접근하기위하여루팅이필요하지만향후정책이변경된다면루팅과정이생략되어더널리활용될것이다. 표 6은개발된시스템과여러스마트기기화면공유시스템의기능비교를보여준다. 표 6. 여러스마트기기화면공유시스템의특징 Table. 6 Features of each Screen Sharing System for Smart Devices Droid VNC Server ASM 개발된시스템 화면공유 O O O 통신방식소켓통신 USB 연결소켓통신 루팅여부 O X O 다중사용자화면화면관리서비스화면강조서비스 X X O X X O X X O 그림 10. 개발된시스템의활용 Fig. 10 Using the Developed System 530
Ⅵ. 결론본논문에서는다수의안드로이드스마트기기의화면을대형디스플레이장치에서효과적으로공유할수있는기법을제안하고이를바탕으로개발한스마트기기화면공유시스템에대해기술하였다. 개발된시스템은 VNC를기반으로구현되었으며 PC에서동작하는서버와스마트기기기반의클라이언트로구성된다. 서버는소켓통신으로클라이언트와연결되며, 클라이언트에서전송되는화면을연결된대형디스플레이장치로출력한다. 그리고클라이언트의요청에따라화면관리를수행한다. 클라이언트는화면정보를서버로전송하고, 서버에연결된디스플레이장치에출력되는화면을손쉽게제어할수있는인터페이스와기능을제공한다. 특히, 화면강조기능을지원하여스마트기기의시각적인정보를효과적으로공유할수있다. 개발된시스템은다중사용자화면과화면관리서비스를지원하여스마트기기의시각적정보를여러사람들과효과적으로공유하도록하여스마트기기에저장된정보를활용하는회의, 세미나등의다양한상황에서널리활용될수있다. 감사의글본연구는 2011년도울산대학교의지원에의하여이루어진연구로서, 관계부처에감사드립니다. 참고문헌 [ 1 ] E.S.Abdulmotaleb. R.Abdur, A.Souhail, PECOLE: P2P multimedia collaborative environment, Multimedia tools and applications v.39 no.3, pp.353-377, 2008 [2] 이태호, 박지혜, 이기훈, 이명준, CoDisplay : 대형디스플레이장치를활용하기위한 VNC 기반회의도구, 한국해양정보통신학회논문지제 13권제 8 호, pp.1666-1672, 2009 [3] 김남곤, 김종원, Visual Sharing: 다자간원격협업환경에서의 View 공유기술, 한국HCI학회 2008년도학술대회 1부 2008 Feb. 13, pp.643-647, 2008 [ 4 ] T.Richardson, Q.Stafford-Fraser, K.R.Wood and A.Hoper, "Virtual Network Computing", IEEE Internet Computing, Volume 2. Number 1, January/February, pp33-38, 1998 [ 5 ] http://www.corp.att.com/attlabs/, AT&T Labs [ 6 ] http://www.tightvnc.org/, TigerVNC [ 7 ] http://www.uvnc.com/, UltraVNC [ 8 ] http://www.realvnc.com/, RealVNC [ 9 ] T.Richardson, "The RFB Protocol", 2006 [10] http://www.wyse.com/products/software/pocket cloud/android/, PocketCloud [11] http://www.toremote.com/, Remote VNC [12] 김태훈, 최종찬, 이정준, "3D 디자인을위한안드로이드 TurboVNC 뷰어 ", 한국정보처리학회 2011년도제35회춘계학술발표대회 2011 Apr. 30, pp.1135-1138, 2011 [13] A.Skurski B.Swiercz "VNC-based remote control for Symbian OS smartphones", Mixed Design of Integrated Circuits&Systems, 2009. MIXDES `09. MIXDES-16th International Conference 2009 June, pp.171-174, 2009 [14] https://github.com/onaips/droid-vnc-server/, Droid VNC Server [15] http://code.google.com/p/android-screen-monitor/, Android Screen Monitor [16] http://developer.android.com/guide/developing/ tools/adb.html/, Android Debug Bridge [17] http://en.wikipedia.org/wiki/rooting_(android_ OS), Rooting(Android OS) [18] http://code.google.com/p/android-vnc-server/, android-vnc-server 531
한국정보통신학회논문지제 16 권제 3 호 저자소개 박종은 (Jong-Eun Park) 2011년울산대학교컴퓨터정보통신공학부졸업 ( 학사 ) 현재울산대학교정보통신공학석사과정 관심분야 : 소셜네트워크서비스, 클라우드시스템 Email : cjswowhddms@nate.com 이유동 (You-Dong Lee) 2012 년울산대학교컴퓨터정보통신공학부졸업 ( 학사 ) 관심분야 : VNC 시스템, 클라우드시스템 Email : udong85@mail.ulsan.ac.kr 이홍창 (Hong-Chang Lee) 2006년울산대학교컴퓨터정보통신공학부졸업 ( 학사 ) 2008년울산대학교컴퓨터정보통신공학부졸업 ( 석사 ) 2010년울산대학교컴퓨터정보통신공학부박사수료 관심분야 : 클라우드시스템, 웹서비스, 소셜네트워크서비스 Email : myhyunii@mail.ulsan.ac.kr 이명준 (Myung-joon Lee) 1980년서울대학교수학과졸업 ( 학사 ) 1982년한국과학기술원전산학과졸업 ( 석사 ) 1991년한국과학기술원전산학과졸업 ( 박사 ) 1993 ~ 1994년미국버지니아대학전산학과교환교수 2005 ~ 2006년미국캘리포니아주립대학교환교수 1982 ~ 현재울산대학컴퓨터정보통신공학부 / 전기공학부교수 관심분야 : 웹기반정보시스템, 프로그래밍언어, 분산프로그래밍시스템, 소셜네트워크서비스 Email : mjlee@ulsan.ac.kr 532