KR101928368B1 - 디바이스간의 자원 공유 방법 - Google Patents

디바이스간의 자원 공유 방법 Download PDF

Info

Publication number
KR101928368B1
KR101928368B1 KR1020160097559A KR20160097559A KR101928368B1 KR 101928368 B1 KR101928368 B1 KR 101928368B1 KR 1020160097559 A KR1020160097559 A KR 1020160097559A KR 20160097559 A KR20160097559 A KR 20160097559A KR 101928368 B1 KR101928368 B1 KR 101928368B1
Authority
KR
South Korea
Prior art keywords
resource
remote
remote device
local device
application
Prior art date
Application number
KR1020160097559A
Other languages
English (en)
Other versions
KR20180013612A (ko
Inventor
강수용
이재훈
이호철
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020160097559A priority Critical patent/KR101928368B1/ko
Publication of KR20180013612A publication Critical patent/KR20180013612A/ko
Application granted granted Critical
Publication of KR101928368B1 publication Critical patent/KR101928368B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/12Arrangements for remote connection or disconnection of substations or of equipment thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

원격 디바이스로, 로컬 디바이스의 어플리케이션으로부터 수신한 상기 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함하는 원격 자원에 대한 액세스 요청을 전달하는 단계, 상기 원격 디바이스로부터, 상기 원격 디바이스가 상기 액세스 요청에 따라 상기 원격 자원에 액세스한 결과인 액세스 데이터를 수신하는 단계, 상기 액세스 데이터에, 상기 액세스 데이터를 전달한 상기 원격 디바이스의 식별자를 결합하는 단계 및 상기 어플리케이션으로, 상기 원격 디바이스의 식별자가 결합된 액세스 데이터를 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.

Description

디바이스간의 자원 공유 방법{RESOURCE SHARING METHOD BETWEEN DEVICES}
본 발명은 디바이스간에 자원을 공유할 수 있는 방법 및 장치에 관한 것이다.
원격 디바이스의 자원을 활용하기 위하여, 로컬 디바이스에서 실행되는 어플리케이션을 이용할 수 있다. 이러한 어플리케이션은 원격 디바이스에 저장된 동영상, 음악 등을 수신하여 재생하거나, 원격 디바이스에 입력된 터치 데이터를 로컬 디바이스와 공유할 수 있다.
상술한 바와 같이 어플리케이션을 사용하여 원격 디바이스의 자원을 공유하는 경우, 어플리케이션의 특성 상 접근할 수 있는 자원이 한정적이기 때문에, 원격 디바이스와 공유할 수 있는 자원 또한 한정적이다. 또한, 동일한 어플리케이션이 자원을 공유하고자 하는 모든 원격 디바이스에 설치되어야 한다. 더 나아가서, 어플리케이션이 원격 디바이스와 통신하는 기능을 직접 구현해야 하므로, 어플리케이션마다 중복된 코드가 사용되어야 한다. 마지막으로, 어플리케이션이 수신한 자원(터치 값, 센서 값 등)이 어느 원격 디바이스로부터 온 것인지 직접 판단해야 한다.
본 발명의 일실시예에 따르면, 로컬 디바이스의 어플리케이션은 어플리케이션에 포함된 자원 공유 방법을 실행하지 않고 원격 디바이스의 원격 자원에 액세스하는 자원 공유 방법을 제안한다.
본 발명의 일실시예에 따르면, 원격 디바이스로, 로컬 디바이스의 어플리케이션으로부터 수신한 상기 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함하는 원격 자원에 대한 액세스 요청을 전달하는 단계, 상기 원격 디바이스로부터, 상기 원격 디바이스가 상기 액세스 요청에 따라 상기 원격 자원에 액세스한 결과인 액세스 데이터를 수신하는 단계, 상기 액세스 데이터에, 상기 액세스 데이터를 전달한 상기 원격 디바이스의 식별자를 결합하는 단계 및 상기 어플리케이션으로, 상기 원격 디바이스의 식별자가 결합된 액세스 데이터를 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 액세스 요청을 수신할 상기 원격 디바이스로, 상기 원격 디바이스의 리시버 컴포넌트에 대한 생성 요청을 전달하는 단계, 및 상기 원격 디바이스로부터, 상기 원격 디바이스가 상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하여 상기 로컬 디바이스와 협업할 준비가 완료되었다는 메시지를 수신하는 단계를 더 포함하고, 상기 원격 디바이스는, 상기 리시버 컴포넌트를 통해 상기 액세스 요청을 수신하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 액세스 데이터를 수신하는 단계는, 상기 원격 디바이스로부터 상기 로컬 디바이스의 리시버 컴포넌트에 대한 생성 요청을 수신하면, 상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하는 단계, 및 상기 리시버 컴포넌트를 통하여, 상기 액세스 데이터를 수신하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 액세스 요청을 전달하는 단계는, 상기 어플리케이션이 전달한 서비스 콜 또는 API(Application Programming Interface) 콜에 포함된 플래그에 기초하여, 상기 액세스 요청을 상기 원격 디바이스로 전달하고, 상기 플래그는, 상기 어플리케이션이 상기 로컬 디바이스 또는 상기 원격 디바이스 중 어느 하나의 디바이스에 대한 하드웨어 자원 또는 소프트웨어 자원에 액세스하는 것인지를 구별하기 위해 이용되는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스로부터, 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함하는 원격 자원에 대한 액세스 요청을 수신하는 단계, 수신된 상기 액세스 요청에 따라 상기 원격 자원에 액세스하는 단계, 및 상기 원격 자원으로부터 상기 원격 자원에 액세스한 결과인 액세스 데이터를 수신하면, 상기 로컬 디바이스로 상기 액세스 데이터를 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 로컬 디바이스로부터, 상기 원격 디바이스의 리시버 컴포넌트에 대한 생성 요청을 수신하는 단계, 상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하는 단계, 및 상기 리시버 컴포넌트가 생성되면, 상기 로컬 디바이스로, 상기 로컬 디바이스와 협업할 준비가 완료되었다는 메시지를 전달하는 단계를 더 포함하고, 상기 액세스 요청은, 상기 리시버 컴포넌트를 통해 수신되는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 액세스 데이터를 전달하는 단계는, 상기 로컬 디바이스로, 상기 로컬 디바이스의 리시버 컴포넌트에 대한 생성 요청을 전달하는 단계, 및 상기 로컬 디바이스에서 생성된 상기 리시버 컴포넌트로 상기 액세스 데이터를 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스의 어플리케이션이 상기 로컬 디바이스의 자원의 주소를 프레임워크로 전달하면, 상기 원격 디바이스로 상기 자원을 전송하기 위한 액세스 요청을 전달하는 단계, 및 상기 원격 디바이스가 핸들러 컴포넌트를 통해 상기 액세스 요청에 대응하여 상기 자원을 활용하는 더미 어플리케이션을 별도로 실행하면, 상기 프레임워크에서 상기 더미 어플리케이션으로 상기 자원을 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 자원을 전달하는 단계는, 상기 프레임워크가 생성한 소켓을 통해 상기 더미 어플리케이션과 연결하는 단계, 및 상기 더미 어플리케이션으로 상기 소켓을 통해 상기 자원을 전달하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스로부터, 상기 로컬 디바이스에서 원격 디바이스로 자원을 전송하기 위한 액세스 요청을 수신하는 단계, 상기 액세스 요청에 대응하여, 핸들러 컴포넌트를 통해 상기 자원을 이용하기 위한 더미 어플리케이션을 실행하는 단계, 상기 더미 어플리케이션과 상기 로컬 디바이스의 프레임워크를 연결하는 단계; 및 상기 더미 어플리케이션을 통해, 상기 로컬 디바이스의 프레임워크로부터 상기 자원을 수신하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 원격 디바이스의 프레임워크를 통해, 상기 자원을 디코딩하는 디코더를 생성하는 단계, 및 상기 자원에 포함된 컨텐츠를 상기 디코더를 통해 디코딩하는 단계, 및 디코딩된 상기 컨텐츠를 상기 더미 어플리케이션을 통해 재생하는 단계를 더 포함하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 더미 어플리케이션은, 상기 컨텐츠에 포함된 비디오 데이터를 재생하기 위하여, 상기 원격 디바이스의 화면을 제어하는 디바이스간의 자원 공유 방법이 제공된다.
일실시예에 따르면, 상기 프레임워크를 연결하는 단계는, 상기 더미 어플리케이션으로 상기 프레임워크의 소켓에 대한 정보를 전달하는 단계, 및 상기 더미 어플리케이션이 상기 소켓에 대한 정보를 이용하여 상기 프레임워크와 통신함으로써, 상기 더미 어플리케이션과 상기 로컬 디바이스의 프레임워크를 연결하는 단계를 포함하는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스의 어플리케이션이 상기 로컬 디바이스의 자원의 주소를 프레임워크로 전달하면, 상기 원격 디바이스로 상기 자원을 전송하기 위한 액세스 요청을 전달하는 단계, 및 상기 원격 디바이스가 핸들러 컴포넌트를 통해 상기 액세스 요청에 대응하여 상기 자원을 디코딩하는 디코더를 생성하면, 상기 원격 디바이스로 상기 자원을 전달하는 단계를 포함하고, 상기 원격 디바이스는, 별도의 더미 어플리케이션을 실행하지 않고, 상기 자원을 수신한 핸들러 컴포넌트를 통해 상기 자원을 직접 이용하는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스로부터, 상기 로컬 디바이스에서 원격 디바이스로 자원을 전송하기 위한 액세스 요청을 수신하는 단계, 상기 액세스 요청에 대응하여, 핸들러 컴포넌트를 통해 상기 자원을 디코딩하기 위한 디코더를 생성하는 단계, 및 상기 디코더가 생성되면, 상기 로컬 디바이스로부터 상기 자원을 수신하는 단계를 포함하고, 상기 자원은, 별도로 실행된 더미 어플리케이션이 아닌, 상기 자원을 수신한 핸들러 컴포넌트를 통해 직접 이용되는 디바이스간의 자원 공유 방법이 제공된다.
본 발명의 일실시예에 따르면, 로컬 디바이스의 어플리케이션은 어플리케이션에 포함된 자원 공유 방법을 실행하지 않고 원격 디바이스의 원격 자원에 액세스할 수 있다.
도 1은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 디바이스들이 자원을 공유하는 일례를 도시한 도면이다.
도 2는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 디바이스의 구조를 개념적으로 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하기 이전에 수행하는 준비 동작을 설명하기 위한 예시적인 도면이다.
도 4는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하는 동작을 설명하기 위한 예시적인 도면이다.
도 5는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하는 동작을 설명하기 위한 흐름도이다.
도 6은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하는 일실시예를 설명하기 위한 도면이다.
도 7은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 대용량의 데이터를 포함하는 자원을 공유하는 동작을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 원격 디바이스가 로컬 디바이스로부터 수신한 자원을 이용하는 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하고, 공유한 자원을 이용하는 동작을 설명하기 위한 흐름도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 “연결되어” 있다거나 “접속되어” 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 “~사이에”와 “바로~사이에” 또는 “~에 직접 이웃하는” 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, “포함하다” 또는 “가지다” 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
자원은 디바이스에 포함된 하드웨어 자원 및 소프트웨어 자원을 포함할 수 있다. 자원을 공유하는 것은 특정 디바이스가 다른 디바이스의 자원을 사용하거나 또는 다른 디바이스가 특정 디바이스의 자원을 사용하는 것을 의미한다. 복수의 디바이스들이 자원을 공유함으로써, 디바이스의 사용자들이 서로 협업할 수 있다. 디바이스는 스마트 기기, 스마트 폰, 태블릿 PC, 스마트 TV 뿐만 아니라 터치, 가속도 등의 센서를 보유한 디바이스를 포함할 수 있다.
도 1은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 디바이스들이 자원을 공유하는 일례를 도시한 도면이다. 도 1을 참고하면, 로컬 디바이스 A(110), 원격 디바이스 B(120), 원격 디바이스 C(130) 및 원격 디바이스 D(140)는 무선 통신을 사용하여 서로 연결될 수 있다. 비록 도 1에 도시되지 않았지만, 로컬 디바이스 A(110), 원격 디바이스 B(120), 원격 디바이스 C(130) 및 원격 디바이스 D(140)는 유선 통신을 통해 서로 연결될 수 있다. 로컬 디바이스 및 원격 디바이스는 자원 공유 방법을 수행하는 디바이스로써, 설명의 편의를 위하여 구분한 것이다. 따라서, 로컬 디바이스가 수행하는 자원 공유 방법은 원격 디바이스도 수행할 수 있다.
로컬 디바이스 A(110), 원격 디바이스 B(120), 원격 디바이스 C(130) 및 원격 디바이스 D(140)는 어플리케이션을 실행하는데 필요한 플랫폼을 포함할 수 있다. 어플리케이션을 실행하는데 필요한 플랫폼은 일실시예에 따른 자원 공유 방법을 수행하는 프로세스를 포함할 수 있다. 따라서, 디바이스에 설치된 어플리케이션은, 다른 디바이스와 통신하여 자원을 공유하는 코드를 포함하지 않고 자원 공유 방법을 수행하는 디바이스를 이용하여 다른 디바이스의 자원에 액세스할 수 있다.
예를 들어, 로컬 디바이스 A(110)가 동영상 어플리케이션을 실행하여, 원격 디바이스 B(120)로부터 동영상 컨텐츠가 포함된 자원을 수신하고, 지도 어플리케이션을 실행하여 원격 디바이스 C(130)의 좌표 데이터가 포함된 자원을 수신한다고 가정하자. 로컬 디바이스 A(110)에서 실행되는 동영상 어플리케이션 및 지도 어플리케이션은 자원 공유 방법을 수행하는 로컬 디바이스 A(110)를 이용하여 원격 디바이스 B(120) 및 원격 디바이스 C(130)와 통신하고 자원을 공유할 수 있다. 즉, 동영상 어플리케이션 및 지도 어플리케이션은 별도의 자원 공유 방법을 수행하기 위한 코드를 포함하지 않고서도, 다른 디바이스와 자원을 공유할 수 있다.
더 나아가서, 어플리케이션이 복수의 디바이스의 자원에 액세스하고, 자원에 액세스한 결과인 액세스 데이터를 수신할 경우, 일실시예에 따른 자원 공유 방법은 어플리케이션이 액세스 데이터가 어느 디바이스로부터 전달된 것인지를 구분할 수 있게 만들 수 있다. 따라서, 어플리케이션은 수신한 액세스 데이터가 어느 디바이스로부터 전달되었는지를 별도의 통신으로 확인하지 않고서도, 액세스 데이터가 어느 디바이스로부터 전달되었는지를 확인할 수 있다.
예를 들어, 자원 공유 방법은 액세스 데이터에 액세스 데이터를 전달한 디바이스의 식별자를 결합하여 어플리케이션으로 전달할 수 있다. 로컬 디바이스 A(110)에서 실행되는 지도 어플리케이션이 원격 디바이스 C(130) 및 원격 디바이스 D(140)의 좌표를 동시에 수신한다 가정하자. 자원 공유 방법을 수행하는 로컬 디바이스 A(110)는 원격 디바이스 C(130)로부터 수신한 좌표 데이터에 원격 디바이스 C(130)의 식별자를 결합하여 지도 어플리케이션으로 전달한다. 유사하게, 로컬 디바이스 A(110)는 원격 디바이스 D(140)로부터 수신한 좌표 데이터에 원격 디바이스 D(140)의 식별자를 결합하여 지도 어플리케이션으로 전달한다. 따라서, 지도 어플리케이션은 원격 디바이스 C(130) 및 원격 디바이스 D(140)를 구분하는 특별한 동작을 수행하지 않고, 좌표 데이터에 결합된 식별자를 확인함으로써, 좌표 데이터가 어느 원격 디바이스로부터 생성되었는지 구분할 수 있다.
추가적으로, 일실시예에 따른 자원 공유 방법은 대용량의 데이터를 포함하는 자원을 공유하는 경우, 플랫폼의 과부하로 인하여 다른 자원을 공유할 수 없는 문제가 발생하지 않도록, 별도의 세션을 통해 대용량의 데이터를 포함하는 자원을 공유할 수 있다. 예를 들어, 로컬 디바이스 A(110)가 원격 디바이스 B(120)로부터 동영상 컨텐츠가 포함된 자원을 수신하면서, 원격 디바이스 C(130)로부터 위치 정보를 수신한다고 가정하자. 로컬 디바이스 A(110)는 동영상 컨텐츠가 포함된 자원을 별도의 세션을 통해 수신함으로써, 자원 공유 방법을 수행하는 컴포넌트의 과부하를 줄일 수 있다.
도 2는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 디바이스(210)의 구조를 개념적으로 도시한 도면이다. 도 2를 참고하면, 디바이스(210)는 프로세서(220) 및 통신부(250)를 포함할 수 있다. 일실시예에 따른 자원 공유 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체가 제공될 수 있다. 상기 프로그램은 자원 공유 방법을 저장한 응용 프로그램, 디바이스 드라이버, 펌웨어, 미들웨어, 동적 링크 라이브러리(DLL) 및 애플릿 중 적어도 하나를 포함할 수 있다. 디바이스(210)는 프로세서(220)를 통해 자원 공유 방법이 기록된 기록 매체를 판독함으로써, 자원 공유 방법을 수행할 수 있다. 통신부(250)는 디바이스(210)와 자원을 공유하는 다른 디바이스와 통신할 수 있다. 통신부(250)는 무선 통신을 지원하기 위하여, 무선 통신 칩셋, 안테나 등을 포함할 수 있다.
도 2를 참고하면, 프로세서(220)는 자원 공유 방법을 수행하기 위하여, 디바이스 관리 서비스(230) 및 원격 서비스(240)를 실행할 수 있다. 도 2는 프로세서(220)에서 실행되는 디바이스 관리 서비스(230) 및 원격 서비스(240) 각각의 구조를 개념적으로 도시한다. 프로세서(220)는 프로세스 또는 스레드의 형태로 디바이스 관리 서비스(230) 및 원격 서비스(240)를 실행할 수 있다. 디바이스 관리 서비스(230) 및 원격 서비스(240)는 컴포넌트 단위로 이들 서비스가 수행하는 작업을 관리할 수 있다.
디바이스(210)는 디바이스 관리 서비스(230)를 통하여, 디바이스(210) 주변의 다른 디바이스를 발견하고, 발견한 디바이스의 정보를 수집 및 관리할 수 있다. 주변의 다른 디바이스를 발견하기 위하여, 디바이스(210)는 디바이스(210)와 동일한 기지국에 연결된 다른 디바이스와 통신할 수 있다. 기지국은 WiFi AP(Access Point), LTE 기지국, 3G 기지국 등을 포함할 수 있다. 디바이스(210)가 연결된 통신 네트워크를 통하여, 디바이스(210)는 디바이스(210)와 동일한 기지국에 연결되지 않은 다른 디바이스와 통신할 수 있다. 디바이스(210)가 통신할 기지국에 연결되지 않은 다른 디바이스는 디바이스(210)에 저장된 연락처 목록에 따라 결정될 수 있다.
디바이스(210)는 디바이스 관리 서비스(230)에 포함된 브로드캐스터 컴포넌트(231)를 통하여, 다른 디바이스로 전송할 브로드캐스트 신호를 생성할 수 있다. 생성된 브로드캐스트 신호는 통신부(250)를 통해 다른 디바이스로 전송될 수 있다.
디바이스(210)가 다른 디바이스로부터 브로드캐스트 신호를 수신한 경우, 디바이스(210)는 디바이스 관리 서비스(230)에 포함된 인포메이션 센더 컴포넌트(233)를 통하여 수신한 브로드캐스트 신호에 대한 응답 신호를 생성할 수 있다. 생성된 응답 신호는 디바이스(210)가 다른 디바이스와 자원을 공유하기 위해 필요한 정보가 포함될 수 있다. 응답 신호는 디바이스(210)의 협업 기능의 활성화 여부, 디바이스(210)의 공유 가능한 자원의 종류 및 디바이스(210)의 자원의 상태 중에서 적어도 하나를 포함할 수 있다. 마찬가지로, 다른 디바이스는 디바이스(210)가 전송한 브로드캐스트 신호를 수신하면, 실행되는 인포메이션 센더 컴포넌트를 통해 브로드캐스트 신호에 대한 응답 신호를 생성할 수 있다.
디바이스(210)는 전송한 브로드캐스트 신호에 대한 응답 신호를 수신하면, 디바이스 관리 서비스(230)에 포함된 디바이스 매니저 컴포넌트(232)를 통해 응답 신호를 해석하여 다른 디바이스의 상태를 탐지할 수 있다. 탐지된 다른 디바이스의 상태에 기초하여, 디바이스(210)는 디바이스 매니저 컴포넌트(232)를 통해 자원을 공유하는 다른 디바이스의 목록을 생성할 수 있다. 디바이스(210)가 로컬 디바이스라면, 디바이스 매니저 컴포넌트(232)에 의해 생성된 목록에 포함된 다른 디바이스가 원격 디바이스이다. 원격 디바이스의 자원 중에서 로컬 디바이스와 공유할 수 있는 자원을 원격 자원이라 한다. 원격 자원은 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함할 수 있다. 생성된 목록은 원격 디바이스가 공유할 수 있는 자원과 관련된 파라미터를 포함할 수 있다.
디바이스(210)는 디바이스 매니저 컴포넌트(232)를 이용하여, 동일한 기지국에 연결된 다른 디바이스의 정보를 사용자에게 제공할 수 있다. 디바이스(210)는 디바이스 매니저 컴포넌트(232)를 이용하여, 원격 디바이스에 대한 정보를 사용자에게 제공할 수 있다.
디바이스(210)는 어플리케이션을 통해 특정 원격 디바이스와 어떤 자원을 공유할지를 결정할 수 있다. 예를 들어, 사용자는 디바이스(210)의 설정 어플리케이션(settings application)을 통해 원격 디바이스 A에 대해서는 센서 데이터 및 위치 데이터만을 공유하고, 원격 디바이스 B에 대해서는 터치 입력 이벤트만을 공유하도록 설정할 수 있다. 디바이스(210)는 사용자가 설정한 내용에 따라, 디바이스 매니저 컴포넌트(232)에 의해 생성된 목록의 파라미터를 변경할 수 있다. 상술한 사용자가 설정 어플리케이션을 사용한 예시에서, 디바이스(210)는 원격 디바이스 A에 대한 파라미터 중에서 센서 데이터 및 위치 데이터를 제외한 다른 자원의 공유 여부를 비활성화(disable)할 수 있다. 즉, 디바이스(210)는 디바이스 매니저 컴포넌트(232)를 이용하여 원격 디바이스의 목록을 생성 및 관리할 수 있다.
디바이스(210)는 원격 서비스(240)를 통하여, 원격 디바이스와 자원을 공유할 수 있다. 디바이스(210)는 디바이스 관리 서비스(230) 및 원격 서비스(240)를 어플리케이션에 대한 플랫폼으로써 활용할 수 있다. 즉, 디바이스(210)에서 실행되는 어플리케이션이 원격 디바이스의 원격 자원에 액세스하기 위하여 서비스 콜 또는 API(Application Programming Interface) 콜을 생성하면, 디바이스(210)는 원격 서비스(240)를 통하여 상기 서비스 콜 또는 API 콜을 원격 디바이스로 전송할 수 있다. 또한, 원격 디바이스가 원격 자원에 액세스한 결과인 액세스 데이터를 디바이스(210)로 전달한 경우, 디바이스(210)는 원격 서비스(240)를 통하여, 디바이스(210)의 자원을 액세스한 결과 데이터를 전달하는 것과 동일한 방법으로, 액세스 데이터를 어플리케이션으로 전달할 수 있다. 따라서, 원격 디바이스와 자원을 공유하는 어플리케이션이 원격 디바이스와 자원을 공유하지 않는 어플리케이션과 동일한 방법으로 개발될 수 있다.
도 2를 참고하면, 원격 서비스(240)는 핸들러 컴포넌트(241), 리시버 컴포넌트(242), 센더 컴포넌트(243) 및 리스너 컴포넌트(244)를 포함할 수 있다.
디바이스(210)는 리스너 컴포넌트(244)를 통하여 원격 디바이스의 접근에 응답할 수 있다. 원격 디바이스가 디바이스(210)의 자원에 액세스하려는 경우, 디바이스(210)는 원격 디바이스로부터 데이터 전송을 위한 세션의 생성 요청을 수신할 수 있다. 디바이스(210)는 리스너 컴포넌트(244)를 통하여 세션의 생성 요청에 응답하여, 원격 디바이스에 매칭되는 리시버 컴포넌트(242)를 생성할 수 있다.
디바이스(210)는 리스너 컴포넌트(244)를 통하여, 원격 디바이스와의 통신 채널을 리시버 컴포넌트(242)로 전달할 수 있다. 통신 채널은 소켓을 포함할 수 있다. 즉, 리시버 컴포넌트(242)는 특정 원격 디바이스가 전달한 데이터 또는 메시지만을 수신할 수 있다. 따라서, 리시버 컴포넌트(242)는 원격 디바이스별로 구분되어 생성될 수 있다. 리시버 컴포넌트(242)는 디바이스(210)에 연결된 원격 디바이스의 개수만큼 생성될 수 있다.
디바이스(210)는 센더 컴포넌트(243)를 통하여 원격 디바이스에 전달한 요청을 생성하고, 리시버 컴포넌트(242)를 통하여 원격 디바이스가 전달한 액세스 데이터를 수신할 수 있다. 디바이스(210)의 어플리케이션이 서비스 콜 또는 API 콜을 통하여, 원격 디바이스의 원격 자원에 액세스하는 경우, 디바이스(210)는 센더 컴포넌트(243)를 통하여 원격 자원에 대한 액세스 요청을 생성할 수 있다. 디바이스(210)는 센더 컴포넌트(243)를 통하여 생성된 액세스 요청을 원격 디바이스의 리시버 컴포넌트로 전달할 수 있다. 유사하게, 원격 디바이스가 디바이스(210)로 액세스 데이터를 전달하는 경우, 원격 디바이스는 센더 컴포넌트를 통하여 액세스 데이터를 디바이스(210)의 리시버 컴포넌트(242)로 전달할 수 있다.
디바이스(210)는 핸들러 컴포넌트(241)를 통하여 리시버 컴포넌트(242)가 수신한 요청 또는 데이터를 처리할 수 있다. 디바이스(210)는 핸들러 컴포넌트(241)를 통하여 리시버 컴포넌트(242)가 수신한 액세스 요청이 디바이스(210)의 어떤 자원에 대한 것인지 구분할 수 있다. 디바이스(210)는 핸들러 컴포넌트(241)를 통하여 액세스 요청을 처리하기 위해 필요한 서비스 또는 API를 호출할 수 있다.
디바이스(210)는 핸들러 컴포넌트(241)를 통하여 리시버 컴포넌트(242)가 수신한 액세스 데이터를, 액세스 데이터를 생성한 원격 자원에 대응되는 서비스로 전달할 수 있다. 더 나아가서, 디바이스(210)는 핸들러 컴포넌트(241)를 통하여 액세스 데이터에 대응되는 원격 디바이스의 식별자를, 액세스 데이터에 결합할 수 있다. 따라서, 원격 디바이스의 식별자가 결합된 액세스 데이터가 원격 자원에 대응되는 서비스로 전달되고, 더 나아가서 어플리케이션으로 전달된다. 따라서, 어플리케이션은 액세스 데이터가 어느 원격 디바이스의 원격 자원에 액세스한 결과인지를 탐지할 수 있다.
도 3은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하기 이전에 수행하는 준비 동작을 설명하기 위한 예시적인 도면이다.
도 3을 참고하면, 로컬 디바이스 A(310)는 원격 디바이스 B(320)의 원격 자원에 대한 액세스 요청을 전달함으로써, 로컬 디바이스 A(310)가 원격 디바이스 B(320)의 원격 자원에 액세스할 수 있다. 로컬 디바이스 A(310)가 액세스 요청을 전달하기 전에, 원격 디바이스 B(320)가 액세스 요청을 수신하기 위한 리시버 컴포넌트 A(323)를 생성할 수 있다. 로컬 디바이스 A(310) 및 원격 디바이스 B(320)가 자원을 공유하기 이전에 수행하는 준비 동작은 원격 디바이스 B(320)가 액세스 요청을 수신하기 위한 리시버 컴포넌트 A(323)를 생성하는 동작을 포함할 수 있다.
도 3을 참고하면, 로컬 디바이스 A(310)의 사용자는 어플리케이션(311)을 통해, 사용자가 협업하고자 하는 원격 디바이스를 하나 이상 선택할 수 있다. 어플리케이션(311)은 로컬 디바이스 A(310)의 플랫폼에서 제공하는 설정 어플리케이션일 수 있다. 사용자는 어플리케이션(311)을 통해, 선택한 원격 디바이스와 공유할 자원의 종류를 선택할 수 있다. 예를 들어, 사용자는 어플리케이션(311)을 통해, 로컬 디바이스 A(310)의 협업 기능을 활성화하고, 원격 디바이스 B(320)의 원격 자원에 액세스하도록 로컬 디바이스 A(310)를 설정할 수 있다.
사용자가 어플리케이션(311)을 통해 협업할 원격 디바이스 및 공유할 자원을 선택하면, 로컬 디바이스 A(310)는 입력된 정보를 디바이스 관리 서비스(312)로 전달할 수 있다. 로컬 디바이스 A(310)는 디바이스 관리 서비스(312)를 통해, 입력된 정보에 기초하여 자원을 공유할 원격 디바이스의 목록을 생성할 수 있다. 로컬 디바이스 A(310)는 생성된 원격 디바이스의 목록을 원격 서비스(313)로 전달할 수 있다. 로컬 디바이스 A(310)는 원격 서비스(313)를 통해, 자원을 공유하는데 사용되는 세션을 생성할 것을 원격 디바이스의 목록에 포함된 원격 디바이스들에게 요청할 수 있다.
보다 구체적으로, 로컬 디바이스 A(310)는 원격 서비스(313)의 센더 컴포넌트(314)를 통해, 원격 디바이스의 목록에 포함된 원격 디바이스들로, 리시버 컴포넌트에 대한 생성 요청을 전달할 수 있다. 도 3을 참고하면, 로컬 디바이스 A(310)는 원격 디바이스 B(320)의 리시버 컴포넌트에 대한 생성 요청(330)을 원격 디바이스 B(320)로 전달할 수 있다. 사용자가 복수의 원격 디바이스를 협업할 원격 디바이스로써 지정한 경우, 도 3에 도시되지 않았지만, 로컬 디바이스 A(310)는 원격 디바이스 B(320) 뿐만 아니라 목록에 포함된 다른 원격 디바이스로 생성 요청(330)을 전달할 수 있다.
도 3을 참고하면, 원격 디바이스 B(320)는 생성 요청(330)을 원격 서비스(321)의 리스너 컴포넌트(322)를 통해 수신할 수 있다. 원격 디바이스 B(320)는 리스너 컴포넌트(322)를 통해 리시버 컴포넌트 A(323)를 생성하고, 로컬 디바이스 A(310)에 대한 소켓을 리시버 컴포넌트 A(323)에 할당할 수 있다. 로컬 디바이스 A(310)에 대한 소켓이 리시버 컴포넌트 A(323)에 할당됨으로써, 자원을 공유하는데 사용되는 세션이 생성될 수 있다. 로컬 디바이스 A(313)에 대한 소켓이 리시버 컴포넌트 A(323)에 할당되었으므로, 리시버 컴포넌트 A(323)는 로컬 디바이스 A(310)가 전달한 원격 자원에 대한 액세스 요청을 배타적으로 수신할 수 있다.
도 3을 참고하면, 원격 디바이스 B(320)는 리시버 컴포넌트 A(323)가 생성되면, 리스너 컴포넌트(322)를 통해 로컬 디바이스 A(310)로 메시지(340)를 전달할 수 있다. 메시지(340)는 원격 디바이스 B(320)가 로컬 디바이스 A(310)와 협업할 준비가 완료되었다는 내용이 포함될 수 있다. 로컬 디바이스 A(310)가 메시지(340)를 수신할 때에, 자원을 공유하기 이전에 수행하는 준비 동작이 완료될 수 있다.
도 4는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하는 동작을 설명하기 위한 예시적인 도면이다. 도 4의 로컬 디바이스 A(410) 및 원격 디바이스 B(420)는 자원을 공유하기에 앞서 도 3에서 설명한 준비 동작을 수행할 수 있다.
도 4를 참고하면, 로컬 디바이스 A(410)에서 실행되는 어플리케이션(411)은 하드웨어 자원에 액세스 하기 위한 서비스 콜 또는 소프트웨어 자원에 액세스하기 위한 API 콜을 생성할 수 있다.
로컬 디바이스 A(410)는 생성된 서비스 콜을, 서비스 콜에 대응하는 하드웨어 자원을 관리하는 서비스(412)로 전달할 수 있다. 로컬 디바이스 A(410)는 서비스(412)를 통하여, 서비스 콜이 로컬 디바이스 A(410)의 자원에 액세스하기 위한 서비스 콜인지 또는 원격 디바이스 B(420)의 원격 자원(426)에 액세스하기 위한 서비스 콜인지를 구분할 수 있다. 서비스 콜은 어느 디바이스의 하드웨어 자원에 액세스 하기 위한 것인지를 표시하는 플래그를 포함할 수 있다. 로컬 디바이스 A(410)는 생성된 API 콜에 대해서도, 서비스 콜과 유사한 동작을 수행함으로써, API 콜이 어느 디바이스의 소프트웨어 자원에 액세스하기 위한 API 콜인지를 구분할 수 있다. 즉, API 콜도 어느 디바이스의 소프트웨어 자원에 액세스 하기 위한 것인지를 표시하는 플래그를 포함할 수 있다.
이하에서는, 로컬 디바이스 A(410)의 어플리케이션(411)이 원격 디바이스 B(420)의 원격 자원(426) 중 하드웨어 자원에 액세스하기 위한 서비스 콜을 생성한 것으로 가정한다. 따라서, 생성된 서비스 콜의 플래그는 원격 디바이스 B(420)를 대상으로 함을 표시할 수 있다. 도 4를 참고하면, 로컬 디바이스 A(410)는 서비스(412)에서 원격 서비스(413)로 액세스 요청을 전달할 수 있다. 액세스 요청은 서비스(412)의 식별자, 액세스 대상이 되는 원격 자원(426)의 종류 및 액세스 대상이 되는 원격 자원(426)으로 전달하는 파라미터 중 적어도 하나를 포함할 수 있다.
도 4를 참고하면, 로컬 디바이스 A(410)는 원격 서비스(413)의 센더 컴포넌트(414)를 통하여, 서비스(412)로부터 수신한 액세스 요청(430)을 원격 디바이스 B(420)로 전달할 수 있다. 사용자가 복수의 디바이스를 협업하고자 하는 원격 디바이스로 선택했다면, 로컬 디바이스 A(410)는 원격 디바이스 B(420) 뿐만 아니라, 선택된 복수의 원격 디바이스로 액세스 요청(430)을 전달할 수 있다. 로컬 디바이스 A(410)는 액세스 요청(430)을 원격 디바이스 B(420)의 리시버 컴포넌트 A(423)로 전달할 수 있다.
원격 디바이스 B(420)는 리시버 컴포넌트 A(423)를 통해 수신한 액세스 요청(430)을 핸들러 컴포넌트(422)로 전달할 수 있다. 원격 디바이스 B(420)는 핸들러 컴포넌트(422)를 통해 액세스 요청(430)을 분석할 수 있다. 원격 디바이스 B(420)는 액세스 요청(430)을 분석하여, 원격 자원(426) 중 어느 자원에 액세스할지 결정할 수 있다. 원격 디바이스 B(420)는 핸들러 컴포넌트(422)를 통해, 액세스 요청(430)에 대응하는 자원을 관리하는 서비스(425)로 자원에 액세스 하라는 액세스 명령을 전달할 수 있다. 서비스(425)는 액세스 명령에 따라 원격 자원(426)에 액세스할 수 있다.
예를 들어, 어플리케이션(411)이 서비스 콜을 전달한 서비스(412)의 식별자가 ‘sensor_service’이고, 원격 자원(426) 중에서 GPS에 액세스하고, 별도의 파라미터를 전달하지 않는다고 가정하자. 이 경우, 액세스 요청(430)은 (sensor_service, GPS, null)을 파라미터로 포함할 수 있다. 원격 디바이스 B(420)는 핸들러 컴포넌트(422)를 통하여, 서비스(425) 중 GPS를 관리하는 서비스로 GPS에 액세스하라는 액세스 명령을 전달할 수 있다. 원격 디바이스 B(420)는 GPS를 관리하는 서비스를 통해 원격 자원(426)에 액세스할 수 있다.
액세스 요청(430)이 원격 자원(426)에 액세스한 결과를 요청하는 파라미터를 포함하지 않거나 또는 액세스 요청(430)을 통해 액세스한 원격 자원(426)이 자원을 액세스한 결과인 액세스 데이터(450)를 생성하지 않는 경우, 원격 디바이스 B(420)는 원격 자원(426)을 액세스 데이터(450)를 로컬 디바이스 A(410)로 전달하지 않는다. 하지만, 로컬 디바이스 A(410)가 액세스 요청(420)을 통해 액세스 데이터(450)를 전달할 것을 요청하거나 또는 액세스 데이터(450)가 원격 자원(426)에 액세스함으로써 생성된 경우, 원격 디바이스 B(420)는 액세스 데이터(450)를 로컬 디바이스 A(410)로 전달하기 위한 동작을 수행할 수 있다.
원격 디바이스 B(420)는 서비스(425)를 통해 원격 자원(426)에 액세스한 결과를 원격 서비스(421)로 전달할 수 있다. 전달되는 결과는 이벤트의 형태일 수 있다. 원격 디바이스 B(420)는 센더 컴포넌트(424)를 통하여, 로컬 디바이스 A(410)로 생성 요청(440)을 전달할 수 있다. 생성 요청(440)은 로컬 디바이스 A(440)가 액세스 데이터(450)를 수신하기 위한 리시버 컴포넌트 B(416)를 생성하라는 메시지를 포함할 수 있다.
로컬 디바이스 A(410)는 생성 요청(440)을 리스너 컴포넌트(415)를 통해 수신할 수 있다. 로컬 디바이스 A(410)는 생성 요청(440)에 응답하여, 리시버 컴포넌트 B(416)를 생성할 수 있다. 로컬 디바이스 A(410)는 리스너 컴포넌트(415)를 통해 리시버 컴포넌트 B(416)를 생성할 수 있다. 로컬 디바이스 A(410)는 리스너 컴포넌트(415)를 통해, 원격 디바이스 B(420)가 연결된 소켓을 리시버 컴포넌트 B(416)에 할당할 수 있다. 이로써, 액세스 데이터(450)를 수신하기 위한 세션이 로컬 디바이스 A(410) 및 원격 디바이스 B(420) 간에 생성될 수 있다.
리시버 컴포넌트 B(416)가 생성되면, 원격 디바이스 B(420)는 센더 컴포넌트(424)를 통해 액세스 데이터(450)를 로컬 디바이스 A(410)로 전달할 수 있다. 원격 디바이스 B(420)의 원격 서비스(421)가 이벤트의 형태로 원격 자원(426)에 액세스한 결과를 수신한 경우, 원격 디바이스 B(420)는 센더 컴포넌트(424)를 통해 이벤트에 포함된 데이터로부터 액세스 데이터(450)를 생성할 수 있다. 원격 디바이스 B(420)는 액세스 데이터(450)를 로컬 디바이스 A(410)의 리시버 컴포넌트 B(416)로 전달할 수 있다.
로컬 디바이스 A(410)는 리시버 컴포넌트 B(416)를 통하여 액세스 데이터(450)를 수신하면, 액세스 데이터(450)를 핸들러 컴포넌트(417)로 전달할 수 있다. 로컬 디바이스 A(410)는 핸들러 컴포넌트(417)를 통하여, 액세스 데이터(450)를 서비스(412)가 이용할 수 있는 이벤트의 형태로 변환할 수 있다. 변환을 수행할 때, 원격 디바이스 B(420)의 식별자가 액세스 데이터(450)에 결합될 수 있다. 로컬 디바이스 A(410)는 변환된 액세스 데이터(450)를 서비스(412)로 전달할 수 있다. 변환된 액세스 데이터(450)는 서비스(412)에서 어플리케이션(411)으로 전달될 수 있다.
상술한 바와 같이, 원격 디바이스 B(420)의 식별자가 액세스 데이터(450)에 결합되므로, 어플리케이션(411)은 수신한 액세스 데이터(450)가 원격 디바이스 B(420)의 원격 자원(426)에 액세스하여 생성되었음을 확인할 수 있다. 원격 디바이스 B(420)의 원격 자원(426)에 액세스하기 위하여 필요한 통신이 모두 어플리케이션(411)이 아닌 별도의 원격 서비스(413)를 통해 수행되므로, 어플리케이션(411)이 보다 쉽게 원격 자원(426)에 액세스할 수 있다.
이상 로컬 디바이스 A(410)가 원격 디바이스 B(420)의 원격 자원(426) 중에서 하드웨어 자원에 액세스하는 일실시예를 설명하였다. 로컬 디바이스 A(410)가 원격 디바이스 B(420)의 원격 자원(426) 중에서 소프트웨어 자원에 액세스하는 경우에도 유사한 동작이 수행될 수 있다. 이하에서는, 로컬 디바이스 A(410)가 원격 디바이스 B(420)의 원격 자원(426) 중에서 소프트웨어 자원에 액세스하는 일실시예를 설명한다. 앞서 설명한 하드웨어 자원에 액세스할 때와 동일한 동작은 간략히 설명한다.
로컬 디바이스 A(410)에서 실행되는 어플리케이션(411)이 소프트웨어 자원에 액세스하기 위한 API 콜을 생성한 경우, 호출된 API는 어플리케이션(411)이 로컬 디바이스 A(410)의 소프트웨어 자원에 액세스하는지 또는 원격 디바이스 B(420)의 소프트웨어 자원에 액세스하는지를 결정할 수 있다. 호출된 API는 API 콜에 포함된 플래그를 통하여 어느 디바이스의 소프트웨어 자원에 액세스하는지를 결정할 수 있다. 즉, 플래그를 통하여 어느 디바이스의 소프트웨어 자원에 액세스하는지를 결정하는 API는 함수 오버로딩(function overloading)을 통해 구현될 수 있다.
생성된 API 콜이 원격 디바이스 B(420)의 원격 자원(426)에 액세스하기 위해 생성된 것으로 결정된 경우, 로컬 디바이스 A(410)는 호출된 API의 식별자 및 소프트웨어 자원에 액세스하는데 필요한 파라미터를 포함하는 액세스 요청(430)을 원격 서비스(413)로 전달할 수 있다.
원격 디바이스 B(420)는 원격 서비스(421)의 핸들러 컴포넌트(422)를 통해 액세스 요청(430)이 어느 소프트웨어 자원에 대한 액세스 요청인지를 구별할 수 있다. 원격 디바이스 B(420)는 핸들러 컴포넌트(422)를 통해, 액세스 요청(430)에 대한 소프트웨어 자원에 대응하는 API를 호출할 수 있다. 원격 디바이스 B(420)가 API를 호출함으로써, 원격 자원(426)에 액세스할 수 있다. API를 호출한 결과가 액세스 데이터(450)에 포함될 수 있다.
로컬 디바이스 A(410)는 API를 호출한 결과가 포함된 액세스 데이터(450)를 수신하면, 액세스 데이터(450)에 원격 디바이스 B(420)의 식별자를 결합할 수 있다. 더 나아가서, 로컬 디바이스 A(410)는 원격 디바이스 B(420)의 식별자가 결합된 액세스 데이터(450)를 이벤트의 형태로 바꾸어, 어플리케이션(411)에 전달할 수 있다. 어플리케이션(411)은 생성한 API 콜에 대한 응답으로써, 액세스 데이터(450)를 수신할 수 있다.
도 5는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스 및 원격 디바이스가 자원을 공유하는 동작을 설명하기 위한 흐름도이다. 이하에서는 도 5를 참고하여 로컬 디바이스 A(510)가 원격 디바이스 B(520)의 원격 자원에 액세스하는 동작을 설명한다.
도 5를 참고하면, 단계(511)에서, 로컬 디바이스 A(510)는 원격 디바이스 B(520)로, 원격 디바이스 B(520)의 리시버 컴포넌트에 대한 생성 요청(530)을 전달할 수 있다. 로컬 디바이스 A(510)는 사용자가 설정 어플리케이션을 통해 원격 디바이스 B(520)를 협업할 원격 디바이스로써 선택한 경우, 생성 요청(530)을 원격 디바이스 B(520)로 전달할 수 있다. 생성 요청(530)은 로컬 디바이스 A(510)의 소켓에 대한 정보를 포함할 수 있다. 소켓에 대한 정보는 로컬 디바이스 A(510)의 통신 포트에 대한 정보를 포함할 수 있다. 생성 요청(530)은 로컬 디바이스 A(510)의 원격 서비스의 센더 컴포넌트에서 원격 디바이스 B(520)의 원격 서비스의 리스너 컴포넌트로 전달될 수 있다.
도 5를 참고하면, 단계(521)에서, 원격 디바이스 B(520)는 생성 요청(530)에 응답하여, 리시버 컴포넌트를 생성할 수 있다. 단계(521)에서 생성된 리시버 컴포넌트는 로컬 디바이스 A(510)가 전달한 메시지를 배타적으로 수신할 수 있으며, 구분의 편의를 위해 이후 리시버 컴포넌트 A라 한다. 원격 디바이스 B(520)는 생성 요청(530)에 포함된 로컬 디바이스 A(510)의 소켓에 대한 정보를 이용하여, 리시버 컴포넌트 A에 로컬 디바이스 A(510)의 소켓을 할당할 수 있다.
원격 디바이스 B(520)는 리시버 컴포넌트 A가 생성되면, 로컬 디바이스 A(510)로, 로컬 디바이스 A(510)와 협업할 준비가 완료되었음을 나타내는 협업 준비 완료의 메시지(540)를 전달할 수 있다. 로컬 디바이스 A(510)는 원격 디바이스 B(520)로부터, 원격 디바이스 B(520)가 생성 요청(530)에 응답하여, 리시버 컴포넌트 A를 생성하여 로컬 디바이스 A(510)와 협업할 준비가 완료되었음을 나타내는 협업 준비 완료의 메시지(540)를 수신함으로써, 리시버 컴포넌트 A의 생성을 확인할 수 있다. 이로써, 로컬 디바이스 A(510)가 원격 디바이스 B(520)의 원격 자원에 대한 액세스 요청을 전달하기 위한 준비 동작이 완료될 수 있다.
도 5를 참고하면, 단계(512)에서, 로컬 디바이스 A(510)는 원격 디바이스 B(520)로, 로컬 디바이스 A(510)의 어플리케이션으로부터 수신한 원격 자원에 대한 액세스 요청(550)을 전달할 수 있다. 액세스 요청(550)은 로컬 디바이스 A(510)의 원격 서비스의 센더 컴포넌트에서 원격 디바이스 B(520)의 원격 서비스의 리시버 컴포넌트 A 로 전달될 수 있다. 액세스 요청(550)은 어플리케이션이 액세스하고자 하는 원격 자원에 대한 정보가 포함될 수 있다.
어플리케이션은 원격 디바이스 B(520)의 하드웨어 자원에 액세스하기 위하여, 서비스 콜을 생성할 수 있다. 어플리케이션은 원격 디바이스 B(520)의 소프트웨어 자원에 액세스하기 위하여, API 콜을 생성할 수 있다. 서비스 콜 또는 API 콜은 어플리케이션이 로컬 디바이스 또는 원격 디바이스 중 어느 하나의 디바이스에 대한 하드웨어 자원 또는 소프트웨어 자원에 액세스하는 것인지를 구별하기 위해 이용되는 정보가 포함될 수 있다. 이러한 정보는 플래그(flag) 또는 파라미터의 형태로 포함될 수 있다.
서비스 콜은 어플리케이션이 어느 하드웨어 자원에 액세스할지를 나타내는 파라미터(예를 들어, TYPE_REMOTE_ORIENTATION, TYPE_REMOTE_GPS)를 포함할 수 있다. API 콜은 어플리케이션이 로컬 디바이스 A(510) 및 원격 디바이스 B(520) 중에서 어느 디바이스의 소프트웨어 자원에 액세스할지를 나타내는 플래그를 포함할 수 있다. 로컬 디바이스 A(510)는 서비스 콜 또는 API 콜로부터 액세스 요청(550)을 생성할 수 있다.
도 5를 참고하면, 단계(522)에서, 원격 디바이스 B(520)는 수신된 액세스 요청(550)에 따라 원격 자원에 액세스할 수 있다. 액세스된 자원에 따라 액세스한 결과인 액세스 데이터(570)가 생성될 수 있다. 예를 들어, 원격 디바이스 B(520)가 액세스 요청(550)에 따라 사용자에게 진동을 출력하는 경우, 액세스 데이터(570)가 생성되지 않으며, 로컬 디바이스 A(510)로 반환할 데이터 또한 없다. 이 경우, 단계(523)에서, 원격 디바이스 B(520)는 액세스 데이터(570)를 로컬 디바이스 A(510)로 전달할 필요가 없는 것으로 결정할 수 있다.
하지만, 원격 디바이스 B(520)가 액세스 요청(550)에 따라 GPS를 통해 원격 디바이스 B(520)의 좌표를 측정하는 경우, 원격 디바이스 B(520)는 측정한 좌표를 로컬 디바이스 A(510)로 반환해야 한다. 이 경우, 원격 디바이스 B(520)는 측정한 좌표가 포함된 액세스 데이터(570)를 생성할 수 있다. 따라서, 단계(523)에서, 원격 디바이스 B(520)는 액세스 데이터(570)를 로컬 디바이스 A(510)로 전달해야 하는 것으로 결정할 수 있다. 이에 따라, 로컬 디바이스 A(510) 및 원격 디바이스 B(520)는 액세스 데이터(570)를 전달하기 위한 동작을 수행할 수 있다.
도 5를 참고하면, 단계(524)에서, 원격 디바이스 B(520)는 로컬 디바이스 A(510)로, 로컬 디바이스 A(510)의 리시버 컴포넌트에 대한 생성 요청(560)을 전달할 수 있다. 생성 요청(560)은 원격 디바이스 B(520)의 원격 서비스의 센더 컴포넌트에서 로컬 디바이스 A(510)의 원격 서비스의 리스너 컴포넌트로 전달될 수 있다. 생성 요청(560)은 원격 디바이스 B의 소켓에 대한 정보가 포함될 수 있다.
도 5를 참고하면, 단계(513)에서, 로컬 디바이스 A (510)는 수신된 생성 요청(560)에 응답하여, 리시버 컴포넌트를 생성할 수 있다. 단계(513)에서 생성된 리시버 컴포넌트는 원격 디바이스 B(520)가 전달한 메시지를 배타적으로 수신할 수 있으며, 구분의 편의를 위해 이후 리시버 컴포넌트 B라 한다. 로컬 디바이스 A(510)는 생성 요청(560)에 포함된 원격 디바이스 B(520)의 소켓에 대한 정보를 이용하여, 리시버 컴포넌트 B에 원격 디바이스 B(520)의 소켓을 할당할 수 있다.
도 5를 참고하면, 단계(525)에서, 원격 디바이스 B(520)는 리시버 컴포넌트 B로 액세스 데이터(570)를 전달할 수 있다. 즉, 로컬 디바이스 A(510)는 리시버 컴포넌트 B를 통해 액세스 데이터(570)를 수신할 수 있다.
도 5를 참고하면, 단계(514)에서, 로컬 디바이스 A(510)는 수신한 액세스 데이터(570)에, 액세스 데이터(570)를 전달한 원격 디바이스 B(520)의 식별자를 결합할 수 있다. 식별자는 IP 주소, MAC 주소 또는 원격 디바이스 B(520)의 ID 중 어느 하나를 포함할 수 있다. 로컬 디바이스 A(510)는 상기 식별자가 결합된 액세스 데이터(570)를 어플리케이션이 사용할 수 있는 형태로 변환할 수 있다. 예를 들어, 로컬 디바이스 A(510)는 상기 식별자가 결합된 액세스 데이터(570)를 이벤트의 형태로 변환할 수 있다.
도 5를 참고하면, 단계(515)에서, 로컬 디바이스 A(510)는 원격 디바이스 B(520)의 식별자가 결합된 액세스 데이터(570)를 어플리케이션으로 전달할 수 있다. 어플리케이션은 수신된 액세스 데이터(570)에 포함된 원격 디바이스 B(520)의 식별자를 탐지함으로써, 액세스 데이터(570)가 원격 디바이스 B(520)의 원격 자원에 액세스한 결과임을 확인할 수 있다. 따라서, 어플리케이션은 복수의 액세스 데이터(570)를 동시에 수신하더라도, 각각의 액세스 데이터(570)가 어느 원격 디바이스로부터 생성되었는지를 탐지할 수 있다.
도 6은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스(610) 및 원격 디바이스(620)가 자원(640)을 공유하는 일실시예를 설명하기 위한 도면이다. 이하에서는, 로컬 디바이스 A(610)가 원격 디바이스 B(620)로 자원(640)을 전송하는 것으로 가정한다.
로컬 디바이스 A(610) 및 원격 디바이스 B(620)가 공유하는 자원(640)이 소프트웨어 자원을 포함할 수 있으므로, 자원(640)은 로컬 디바이스 A(610)의 컨텐츠(예를 들어, 비디오 컨텐츠, 오디오 컨텐츠, 이미지 컨텐츠 등)를 포함할 수 있다. 자원(640)에 포함된 컨텐츠가 대용량의 데이터를 포함하는 경우, 복수의 원격 디바이스들을 관리하는 원격 디바이스 B(610)의 원격 서비스가 자원(640)을 수신 및 처리하는 데 소요되는 시간이 증가할 수 있다. 일실시예에 따른 자원 공유 방법은 원격 서비스가 대용량의 데이터를 포함하는 자원(640)을 처리하는데 소요되는 시간을 줄이기 위하여, 대용량의 데이터를 포함하는 자원(640)을 별도의 세션을 통해 수신할 수 있다.
도 6을 참고하면, 로컬 디바이스 A(610)에서 실행되는 어플리케이션(611)이 로컬 디바이스 A(610)에 포함된 자원(640)을 원격 디바이스 B(620)로 전달하기 위하여, 자원(640)의 주소를 프레임워크(612)로 전달할 수 있다. 자원(640)의 주소는 URI(Uniform Resource Identifier) 포맷을 따를 수 있다. 자원(640)이 비디오 컨텐츠를 포함하는 경우, 어플리케이션(611)은 자원(640)에 포함된 비디오 컨텐츠를 재생하는 어플리케이션일 수 있다.
로컬 디바이스 A(610)는 프레임워크(612)를 통해 자원(640)을 원격 디바이스 B(620)로 전달하기 위한 액세스 요청(630)을 생성할 수 있다. 액세스 요청(630)은 프레임워크(612)가 자원(640)을 전송하기 위해 생성한 소켓에 대한 정보를 포함할 수 있다. 로컬 디바이스 A(610)는 생성된 액세스 요청(630)을 프레임워크(612)에서 원격 서비스(613)로 전달할 수 있다.
로컬 디바이스 A(610)는 원격 서비스(613)의 센더 컴포넌트(614)를 통하여, 액세스 요청(630)을 원격 디바이스 B(620)로 전달할 수 있다. 원격 디바이스 B(620)의 리시버 컴포넌트(622)는 액세스 요청(630)을 수신할 수 있다. 리시버 컴포넌트(622)는 로컬 디바이스 A(610)의 액세스 요청(630)을 수신하기 위해 생성된 것으로, 도 3에서 설명한 동작을 수행함으로써 생성될 수 있다.
원격 디바이스 B(620)는 리시버 컴포넌트(622)를 통해 수신된 액세스 요청(630)을 핸들러 컴포넌트(623)로 전달할 수 있다. 원격 디바이스 B(620)는 원격 서비스(621)에서 실행되는 핸들러 컴포넌트(623)를 통해 액세스 요청(630)을 분석하여, 액세스 요청(630)에 포함된 소켓에 대한 정보를 탐지할 수 있다. 더 나아가서, 원격 디바이스 B(620)는 로컬 디바이스 A(610)가 전달하고자 하는 자원(640)이 대용량의 데이터를 포함함을 탐지할 수 있다.
자원(640)이 대용량의 데이터를 포함하므로, 원격 디바이스 B(620)는 별도의 세션을 생성하여 자원(640)을 수신할 준비를 할 수 있다. 원격 디바이스 B(620)는 핸들러 컴포넌트(623)를 통해 더미 어플리케이션(624)을 실행할 수 있다. 더미 어플리케이션(624)은 액세스 요청(630)에 포함된 소켓에 대한 정보를 이용하여 프레임워크(612)가 생성한 소켓에 연결할 수 있다. 이로써, 로컬 디바이스 A(610) 및 원격 디바이스 B(620)가 센더 컴포넌트(614) 및 리시버 컴포넌트(622)를 통해 연결된 것과 구분되는 프레임워크(612) 및 더미 어플리케이션(624)간의 연결이 성립될 수 있다. 다시 말하면, 로컬 디바이스 A(610) 및 원격 디바이스 B(620)는 액세스 요청(630)을 전달하기 위한 세션과 구별되는 자원(640)을 전달하기 위한 세션을 생성할 수 있다.
프레임워크(612) 및 더미 어플리케이션(624)가 서로 연결되면, 자원(640)이 프레임워크(612)에서 더미 어플리케이션(624)으로 직접 전달될 수 있다. 즉, 자원(640)은 원격 서비스(613)의 센더 컴포넌트(614) 및 원격 서비스(621)의 리시버 컴포넌트(622)를 통과하지 않고 곧바로 더미 어플리케이션(624)으로 전달될 수 있다. 원격 디바이스 B(620)는 더미 어플리케이션(624)을 통해 수신한 자원(640)을 직접 이용할 수 있다. 따라서, 원격 서비스(613)의 부하가 감소할 수 있다.
대용량의 데이터를 포함하는 자원(640)의 예로써, 비디오 컨텐츠가 있다. 원격 디바이스 B(620)는 더미 어플리케이션(624)을 통해 자원(640)에 포함된 비디오 컨텐츠를 직접 재생할 수 있다. 비디오 컨텐츠를 직접 재생하기 위하여, 더미 어플리케이션(624)은 원격 디바이스 B(620)의 화면을 제어할 수 있다. 비디오 컨텐츠를 직접 재생하기 위하여, 더미 어플리케이션(624)은 프레임워크(625)를 이용해 자원(640)에 포함된 비디오 컨텐츠를 디코딩하는 디코더를 생성할 수 있다.
더미 어플리케이션(624)이 자원(640)을 직접 실시간으로 수신하기 때문에, 자원(640)을 복사하는 별도의 동작을 수행하지 않고서도 원격 디바이스 B(620)는 자원(640)에 포함된 비디오 컨텐츠를 재생할 수 있다. 더 나아가서, 원격 디바이스 B(620)의 사용자는 어플리케이션(611)과 동일한 어플리케이션을 원격 디바이스 B(620)에 설치하지 않으면서 더미 어플리케이션(624)을 통해 자원(640)에 포함된 비디오 컨텐츠를 재생할 수 있다.
도 7은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스(710) 및 원격 디바이스(720)가 대용량의 데이터를 포함하는 자원(740)을 공유하는 동작을 설명하기 위한 흐름도이다.
도 7을 참고하면, 단계(711)에서, 로컬 디바이스(710)는 원격 디바이스(720)로 자원(740)을 전송하기 위한 액세스 요청(730)을 전달할 수 있다. 로컬 디바이스(710)는 로컬 디바이스의 어플리케이션이 로컬 디바이스의 자원의 주소를 프레임워크로 전달하는 경우, 자원의 주소에 대응하는 자원(740)을 전송하기 위한 액세스 요청(730)을 원격 디바이스(720)로 전달할 수 있다. 액세스 요청(730)은 전송할 자원(740)의 종류를 표시한 파라미터를 포함할 수 있다. 예를 들어, 자원(740)이 비디오 컨텐츠를 포함하는 경우, 액세스 요청(730)은 자원(740)에 포함된 비디오 컨텐츠와 관련된 정보를 포함할 수 있다. 더 나아가서, 액세스 요청(730)은 자원(740)을 송신하는 로컬 디바이스(710)의 프레임워크가 생성한 소켓에 대한 정보를 포함할 수 있다.
원격 디바이스(720)는 액세스 요청(730)을 로컬 디바이스(710)로부터 데이터를 수신하기 위해 생성한 리시버 컴포넌트를 통해 수신할 수 있다. 원격 디바이스(720)는 핸들러 컴포넌트를 통해 액세스 요청(730)을 분석함으로써, 로컬 디바이스(710)가 전달할 자원(740)이 비디오 컨텐츠를 포함함을 알 수 있다.
도 7을 참고하면, 단계(721)에서, 원격 디바이스(720)는 액세스 요청(730)에 대응하여, 핸들러 컴포넌트를 통해 자원(740)을 활용하는 더미 어플리케이션을 별도로 실행할 수 있다. 원격 디바이스(720)는 액세스 요청(730)에 포함된 로컬 디바이스(710)의 프레임워크가 생성한 소켓에 대한 정보를 더미 어플리케이션으로 전달할 수 있다. 소켓에 대한 정보는 로컬 디바이스(710)의 프레임워크에 할당된 통신 포트의 번호를 포함할 수 있다.
도 7을 참고하면, 단계(722)에서, 원격 디바이스(720)는 더미 어플리케이션과 로컬 디바이스(710)의 프레임워크를 연결할 수 있다. 원격 디바이스(720)는 더미 어플리케이션을 통하여 프레임워크의 소켓과 통신함으로써, 더미 어플리케이션과 프레임워크를 연결할 수 있다. 이로써, 로컬 디바이스(710) 및 원격 디바이스(720)는 로컬 디바이스(710)의 원격 서비스 및 원격 디바이스(720)의 원격 서비스간의 논리적 연결과 구분되는 로컬 디바이스(710)의 프레임워크 및 원격 디바이스(720)의 더미 어플리케이션간의 논리적 연결을 가진다.
도 7을 참고하면, 단계(712)에서, 로컬 디바이스(710)는 프레임워크에서 원격 디바이스(720)의 더미 어플리케이션으로 자원(740)을 전달할 수 있다. 따라서, 원격 디바이스(720)는 리시버 컴포넌트와 구별되는 더미 어플리케이션을 통해 자원(740)을 수신할 수 있다. 자원(740)은 프레임워크가 생성한 소켓을 통해 원격 디바이스(720)로 전송될 수 있다. 자원(740)이 비디오 컨텐츠 또는 오디오 컨텐츠를 포함하는 경우, 로컬 디바이스(710)는 프레임워크를 통해 자원(740)을 일정한 재생 단위로 분할하여 전송할 수 있다.
도 7을 참고하면, 자원(740)이 디코딩이 필요한 컨텐츠를 포함하는 경우, 단계(723)에서, 원격 디바이스(720)는 자원(740)을 디코딩하는 디코더를 생성할 수 있다. 원격 디바이스(720)는 프레임워크를 통해 디코더를 생성할 수 있다.
도 7을 참고하면, 단계(724)에서, 원격 디바이스(720)는 자원(740)에 포함된 컨텐츠를 디코더를 통해 디코딩할 수 있다. 단계(725)에서, 원격 디바이스(720)는 디코딩된 컨텐츠를 더미 어플리케이션을 통해 재생할 수 있다. 자원(740)이 비디오 컨텐츠를 포함하는 경우, 원격 디바이스(720)는 더미 어플리케이션을 통해 화면을 제어함으로써, 비디오 컨텐츠를 재생할 수 있다. 따라서, 원격 디바이스(720)는 자원(740)을 원격 디바이스(720)의 원격 서비스의 리시버 컴포넌트 또는 핸들러 컴포넌트가 아닌 더미 어플리케이션을 통해 직접 수신할 수 있다. 이로써 원격 디바이스(720)의 원격 서비스의 리시버 컴포넌트 또는 핸들러 컴포넌트의 부하가 감소할 수 있다.
이와 대조적으로, 원격 디바이스(720)는 원격 서비스의 핸들러 컴포넌트를 통해 수신한 자원(740)을 직접 이용할 수도 있다.
도 8은 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 원격 디바이스가 로컬 디바이스로부터 수신한 자원을 이용하는 동작을 설명하기 위한 도면이다.
도 8을 참고하면, 로컬 디바이스 A(810)에서 실행되는 어플리케이션(811)이 로컬 디바이스 A(810)에 포함된 자원(840)의 주소를 프레임워크(812)로 전달할 수 있다. 로컬 디바이스 A(810)는 자원(840)에 대한 정보가 포함된 액세스 요청(830)을 프레임워크(812)에서 원격 서비스(813)로 전달할 수 있다.
로컬 디바이스 A(810)는 원격 서비스(813)의 센더 컴포넌트(814)를 통하여, 액세스 요청(830)을 원격 디바이스 B(820)의 리시버 컴포넌트(822)로 전달할 수 있다. 원격 디바이스 B(820)는 리시버 컴포넌트(822)를 통해 수신된 액세스 요청(830)을 핸들러 컴포넌트(823)로 전달할 수 있다.
원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 통해 자원(840)을 직접 이용할 수 있는지를 결정할 수 있다. 원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 통해 자원(840)을 이용하면서, 핸들러 컴포넌트(823)를 통해 다른 액세스 요청을 처리할 수 있는 경우, 핸들러 컴포넌트(823)를 통해 자원(840)을 직접 이용하는 것으로 결정할 수 있다. 이 경우, 원격 디바이스 B(820)는 별도의 더미 어플리케이션을 실행하지 않는다. 예를 들어, 자원(840)이 비교적 용량이 작은 비디오 컨텐츠 또는 오디오 컨텐츠를 포함하는 경우, 원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 이용하여 자원(840)을 직접 이용할 수 있다.
원격 디바이스 B(820)가 핸들러 컴포넌트(823)를 통해 자원(840)을 직접 이용하기로 결정한 경우, 자원(840)은 원격 서비스(813)의 센더 컴포넌트(814)에서 원격 서비스(821)의 리시버 컴포넌트(822)로 전달될 수 있다. 원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 통해 수신한 자원(840)을 직접 이용할 수 있다.
예를 들어, 자원(840)이 비교적 용량이 작은 비디오 컨텐츠 또는 오디오 컨텐츠를 포함하는 경우, 원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 이용하여 자원(840)에 포함된 비디오 컨텐츠 또는 오디오 컨텐츠를 재생할 수 있다. 원격 디바이스 B(820)는 핸들러 컴포넌트(823)를 통해 프레임워크(824)에 액세스하여, 자원(840)에 포함된 컨텐츠를 디코딩하기 위한 디코더를 생성할 수 있다.
도 9는 본 발명의 일실시예에 따른 자원 공유 방법을 수행하는 로컬 디바이스(910) 및 원격 디바이스(920)가 자원(940)을 공유하고, 공유한 자원(940)을 이용하는 동작을 설명하기 위한 흐름도이다.
도 9를 참고하면, 단계(911)에서, 로컬 디바이스(910)는 원격 디바이스(920)로 자원(940)을 전송하기 위한 액세스 요청(930)을 전달할 수 있다. 액세스 요청(930)은 자원(940)에 대한 정보를 포함할 수 있다. 원격 디바이스(920)는 리시버 컴포넌트를 통해 액세스 요청(930)을 수신할 수 있다.
도 9를 참고하면, 단계(921)에서, 원격 디바이스(920)는 액세스 요청(930)에 대응하여, 핸들러 컴포넌트를 통해 자원(940)을 디코딩하기 위한 디코더를 생성할 수 있다. 원격 디바이스(920)는 프레임워크를 이용하여 디코더를 생성할 수 있다. 원격 디바이스(920)는 자원(940)을 이용하기 위한 별도의 더미 어플리케이션을 실행하지 않을 수 있다.
도 9를 참고하면, 단계(912)에서, 원격 디바이스(920)가 디코더를 생성하면, 로컬 디바이스(910)는 원격 디바이스(920)로 자원(940)을 전달할 수 있다. 원격 디바이스(920)는 원격 서비스의 리시버 컴포넌트를 통해 자원(940)을 수신할 수 있다. 수신된 자원(940)은 리시버 컴포넌트에서 핸들러 컴포넌트로 전달될 수 있다. 원격 디바이스(920)는 핸들러 컴포넌트를 통해 자원(940)을 직접 이용할 수 있다.
도 9를 참고하면, 단계(922)에서, 원격 디바이스(920)는 핸들러 컴포넌트를 통해 자원(940)을 디코딩할 수 있다. 자원(940)이 재생 가능한 컨텐츠를 포함하는 경우, 단계(923)에서, 원격 디바이스(920)는 핸들러 컴포넌트를 통해 디코딩된 자원을 재생할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
110 : 로컬 디바이스 A
120 : 원격 디바이스 B
130 : 원격 디바이스 C
140 : 원격 디바이스 D

Claims (15)

  1. 로컬 디바이스가 원격 디바이스와 자원을 공유하는 방법에 있어서,
    원격 디바이스로, 로컬 디바이스의 어플리케이션으로부터 수신한 상기 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함하는 원격 자원에 대한 액세스 요청을 전달하는 단계;
    상기 원격 디바이스로부터, 상기 원격 디바이스가 상기 액세스 요청에 따라 상기 원격 자원에 액세스한 결과인 액세스 데이터를 수신하는 단계;
    상기 액세스 데이터에, 상기 액세스 데이터를 전달한 상기 원격 디바이스의 식별자를 결합하는 단계; 및
    상기 어플리케이션으로, 상기 원격 디바이스의 식별자가 결합된 액세스 데이터를 전달하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  2. 제1항에 있어서,
    상기 액세스 요청을 수신할 상기 원격 디바이스로, 상기 원격 디바이스의 리시버 컴포넌트에 대한 생성 요청을 전달하는 단계; 및
    상기 원격 디바이스로부터, 상기 원격 디바이스가 상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하여 상기 로컬 디바이스와 협업할 준비가 완료되었다는 메시지를 수신하는 단계
    를 더 포함하고,
    상기 원격 디바이스는, 상기 리시버 컴포넌트를 통해 상기 액세스 요청을 수신하는 디바이스간의 자원 공유 방법.
  3. 제1항에 있어서,
    상기 액세스 데이터를 수신하는 단계는,
    상기 원격 디바이스로부터 상기 로컬 디바이스의 리시버 컴포넌트에 대한 생성 요청을 수신하면, 상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하는 단계; 및
    상기 리시버 컴포넌트를 통하여, 상기 액세스 데이터를 수신하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  4. 제1항에 있어서,
    상기 액세스 요청을 전달하는 단계는,
    상기 어플리케이션이 전달한 서비스 콜 또는 API(Application Programming Interface) 콜에 포함된 플래그에 기초하여, 상기 액세스 요청을 상기 원격 디바이스로 전달하고,
    상기 플래그는,
    상기 어플리케이션이 상기 로컬 디바이스 또는 상기 원격 디바이스 중 어느 하나의 디바이스에 대한 하드웨어 자원 또는 소프트웨어 자원에 액세스하는 것인지를 구별하기 위해 이용되는 디바이스간의 자원 공유 방법.
  5. 원격 디바이스가 로컬 디바이스와 자원을 공유하는 방법에 있어서,
    로컬 디바이스로부터, 원격 디바이스의 하드웨어 자원 또는 소프트웨어 자원을 포함하는 원격 자원에 대한 액세스 요청을 수신하는 단계;
    수신된 상기 액세스 요청에 따라 상기 원격 자원에 액세스하는 단계; 및
    상기 원격 자원으로부터 상기 원격 자원에 액세스한 결과인 액세스 데이터를 수신하면, 상기 로컬 디바이스로 상기 액세스 데이터를 전달하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  6. 제5항에 있어서,
    상기 로컬 디바이스로부터, 상기 원격 디바이스의 리시버 컴포넌트에 대한 생성 요청을 수신하는 단계;
    상기 생성 요청에 응답하여, 상기 리시버 컴포넌트를 생성하는 단계; 및
    상기 리시버 컴포넌트가 생성되면, 상기 로컬 디바이스로, 상기 로컬 디바이스와 협업할 준비가 완료되었다는 메시지를 전달하는 단계
    를 더 포함하고,
    상기 액세스 요청은, 상기 리시버 컴포넌트를 통해 수신되는 디바이스간의 자원 공유 방법.
  7. 제5항에 있어서,
    상기 액세스 데이터를 전달하는 단계는,
    상기 로컬 디바이스로, 상기 로컬 디바이스의 리시버 컴포넌트에 대한 생성 요청을 전달하는 단계; 및
    상기 로컬 디바이스에서 생성된 상기 리시버 컴포넌트로 상기 액세스 데이터를 전달하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  8. 로컬 디바이스가 원격 디바이스와 자원을 공유하는 방법에 있어서,
    로컬 디바이스의 어플리케이션이 상기 로컬 디바이스의 자원의 주소를 프레임워크로 전달하면, 원격 디바이스로 상기 자원을 전송하기 위한 액세스 요청을 전달하는 단계; 및
    상기 원격 디바이스가 핸들러 컴포넌트를 통해 상기 액세스 요청에 대응하여 상기 자원을 활용하는 더미 어플리케이션을 별도로 실행하면, 상기 프레임워크에서 상기 더미 어플리케이션으로 상기 자원을 전달하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  9. 제8항에 있어서,
    상기 자원을 전달하는 단계는,
    상기 프레임워크가 생성한 소켓을 통해 상기 더미 어플리케이션과 연결하는 단계; 및
    상기 더미 어플리케이션으로 상기 소켓을 통해 상기 자원을 전달하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  10. 원격 디바이스가 로컬 디바이스와 자원을 공유하는 방법에 있어서,
    로컬 디바이스로부터, 상기 로컬 디바이스에서 원격 디바이스로 자원을 전송하기 위한 액세스 요청을 수신하는 단계;
    상기 액세스 요청에 대응하여, 핸들러 컴포넌트를 통해 상기 자원을 이용하기 위한 더미 어플리케이션을 실행하는 단계;
    상기 더미 어플리케이션과 상기 로컬 디바이스의 프레임워크를 연결하는 단계; 및
    상기 더미 어플리케이션을 통해, 상기 로컬 디바이스의 프레임워크로부터 상기 자원을 수신하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  11. 제10항에 있어서,
    상기 원격 디바이스의 프레임워크를 통해, 상기 자원을 디코딩하는 디코더를 생성하는 단계;
    상기 자원에 포함된 컨텐츠를 상기 디코더를 통해 디코딩하는 단계; 및
    디코딩된 상기 컨텐츠를 상기 더미 어플리케이션을 통해 재생하는 단계
    를 더 포함하는 디바이스간의 자원 공유 방법.
  12. 제11항에 있어서,
    상기 더미 어플리케이션은, 상기 컨텐츠에 포함된 비디오 데이터를 재생하기 위하여, 상기 원격 디바이스의 화면을 제어하는 디바이스간의 자원 공유 방법.
  13. 제10항에 있어서,
    상기 프레임워크를 연결하는 단계는,
    상기 더미 어플리케이션으로 상기 프레임워크의 소켓에 대한 정보를 전달하는 단계; 및
    상기 더미 어플리케이션이 상기 소켓에 대한 정보를 이용하여 상기 프레임워크와 통신함으로써, 상기 더미 어플리케이션과 상기 로컬 디바이스의 프레임워크를 연결하는 단계
    를 포함하는 디바이스간의 자원 공유 방법.
  14. 로컬 디바이스가 원격 디바이스와 자원을 공유하는 방법에 있어서,
    로컬 디바이스의 어플리케이션이 상기 로컬 디바이스의 자원의 주소를 프레임워크로 전달하면, 원격 디바이스로 상기 자원을 전송하기 위한 액세스 요청을 전달하는 단계; 및
    상기 원격 디바이스가 핸들러 컴포넌트를 통해 상기 액세스 요청에 대응하여 상기 자원을 디코딩하는 디코더를 생성하면, 상기 원격 디바이스로 상기 자원을 전달하는 단계
    를 포함하고,
    상기 원격 디바이스는,
    별도의 더미 어플리케이션을 실행하지 않고, 상기 자원을 수신한 핸들러 컴포넌트를 통해 상기 자원을 직접 이용하는 디바이스간의 자원 공유 방법.
  15. 원격 디바이스가 로컬 디바이스와 자원을 공유하는 방법에 있어서,
    로컬 디바이스로부터, 상기 로컬 디바이스에서 원격 디바이스로 자원을 전송하기 위한 액세스 요청을 수신하는 단계;
    상기 액세스 요청에 대응하여, 핸들러 컴포넌트를 통해 상기 자원을 디코딩하기 위한 디코더를 생성하는 단계; 및
    상기 디코더가 생성되면, 상기 로컬 디바이스로부터 상기 자원을 수신하는 단계
    를 포함하고,
    상기 자원은,
    별도로 실행된 더미 어플리케이션이 아닌, 상기 자원을 수신한 핸들러 컴포넌트를 통해 직접 이용되는 디바이스간의 자원 공유 방법.
KR1020160097559A 2016-07-29 2016-07-29 디바이스간의 자원 공유 방법 KR101928368B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160097559A KR101928368B1 (ko) 2016-07-29 2016-07-29 디바이스간의 자원 공유 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160097559A KR101928368B1 (ko) 2016-07-29 2016-07-29 디바이스간의 자원 공유 방법

Publications (2)

Publication Number Publication Date
KR20180013612A KR20180013612A (ko) 2018-02-07
KR101928368B1 true KR101928368B1 (ko) 2018-12-12

Family

ID=61204566

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160097559A KR101928368B1 (ko) 2016-07-29 2016-07-29 디바이스간의 자원 공유 방법

Country Status (1)

Country Link
KR (1) KR101928368B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109756397B (zh) * 2019-01-08 2021-05-18 深圳市网心科技有限公司 一种硬件共享方法、系统及相关设备

Also Published As

Publication number Publication date
KR20180013612A (ko) 2018-02-07

Similar Documents

Publication Publication Date Title
RU2603496C2 (ru) Беспроводной сетевой интерфейс с инфраструктурными и прямыми режимами
CN107222326B (zh) 用于设备间服务的访问方法、配置方法及装置
KR101605968B1 (ko) 가상 객체의 동적 인스턴스 호스팅 서비스 변경 방법 및 시스템
KR20130066069A (ko) 클라우드 컴퓨팅 기반 어플리케이션 제공 방법 및 시스템
US10389832B2 (en) Remote casting of media content
KR20150112742A (ko) 디바이스 제어 방법, 클라이언트, 서버, 중계 디바이스 및 제어 대상 디바이스
KR102121358B1 (ko) 데이터 전송 방법 및 디바이스
US20170171496A1 (en) Method and Electronic Device for Screen Projection
US20110119393A1 (en) Method and apparatus for providing pair play service
WO2019201340A1 (zh) 处理器核心调度方法、装置、终端及存储介质
KR20220080198A (ko) 오디오 데이터 프로세싱 방법, 서버, 및 저장 매체
US9485321B2 (en) Method and apparatus for brokering server and device communications and computer-readable storage medium for executing the method
CN114040232A (zh) 投屏系统、方法、电子设备和存储介质
KR101928368B1 (ko) 디바이스간의 자원 공유 방법
CN113973052A (zh) 云网络系统、数据传输方法、计算节点及存储介质
CN107925583B (zh) 服务层任播和些播
US20230300406A1 (en) Methods for media streaming content preparation for an application provider in 5g networks
WO2016197783A2 (zh) 控制消息的发送方法及装置
US20100088732A1 (en) Method and apparatus for using service based on objects for implementing different functions of service
US20230135220A1 (en) Methods for providing light 5g ar/mr devices by running ar/mr processing on 5g edge servers/cloud including simplified dynamic scene updates
US20220322323A1 (en) Method and apparatus for configuring 5g application servers in connected uplink-to-downlink streaming
JPWO2018043111A1 (ja) 情報処理装置、情報処理方法、及び、情報処理システム
KR20130134849A (ko) 가상 av 서비스 시스템 및 방법
CN112383617A (zh) 进行长连接的方法、装置、终端设备以及介质
KR20110096871A (ko) 클라우드 자원을 다수의 디바이스 자원과 결합하여 제공하는 자원제공방법 및 자원분배장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant