KR101711203B1 - System for providing multimedia contents, and Control Method Thereafter - Google Patents

System for providing multimedia contents, and Control Method Thereafter Download PDF

Info

Publication number
KR101711203B1
KR101711203B1 KR1020160041401A KR20160041401A KR101711203B1 KR 101711203 B1 KR101711203 B1 KR 101711203B1 KR 1020160041401 A KR1020160041401 A KR 1020160041401A KR 20160041401 A KR20160041401 A KR 20160041401A KR 101711203 B1 KR101711203 B1 KR 101711203B1
Authority
KR
South Korea
Prior art keywords
user terminal
user
server
linux
linux server
Prior art date
Application number
KR1020160041401A
Other languages
Korean (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 KR1020160041401A priority Critical patent/KR101711203B1/en
Application granted granted Critical
Publication of KR101711203B1 publication Critical patent/KR101711203B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2381Adapting the multiplex stream to a specific network, e.g. an Internet Protocol [IP] network
    • G06F17/30781
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/20Education
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • H04N21/4355Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream involving reformatting operations of additional data, e.g. HTML pages on a television screen
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/61Network physical structure; Signal processing
    • H04N21/6106Network physical structure; Signal processing specially adapted to the downstream path of the transmission network
    • H04N21/6125Network physical structure; Signal processing specially adapted to the downstream path of the transmission network involving transmission via Internet

Abstract

The present invention relates to a system for providing multimedia content and a method for controlling the system. More specifically, the present invention relates to a system for providing multimedia content, such as a source code, an image, an execution result, and the like, and also relates to a method for controlling the system. A system for providing multimedia content according to an embodiment of the present invention comprises: a main server which transfers information, required for WebRTC between first and second user terminals, to the first and second user terminals by using a WebSocket and allocates accounts of a Linux server for a class to the respective first and second user terminals; a relay server which transfers data, received from a Linux server by using the WebSocket, to the first user terminal and/or second user terminal in real time and transfers instructions or codes, input via the first or second user terminal, to the Linux server; and the Linux server which executes the instructions input via the first or second user terminal and received from the relay server.

Description

멀티미디어 콘텐츠 제공 시스템 및 그 제어방법{System for providing multimedia contents, and Control Method Thereafter}Technical Field [0001] The present invention relates to a multimedia contents providing system and a control method therefor,

본 발명은 멀티미디어 콘텐츠 제공 시스템 및 그 제어방법에 관한 것으로, 좀 더 구체적으로 본 발명은 소스코드, 화상, 실행결과 등 멀티미디어 콘텐츠를 제공하는 시스템 및 그 제어방법에 관한 것이다.The present invention relates to a multimedia contents providing system and a control method thereof, and more particularly, to a system and a control method for providing multimedia contents such as a source code, an image, and an execution result.

정부의 2018년 SW 교육 의무화에 발맞추어, 프로그래밍 교육에 대한 수요가 증가하고 있으며, 현재 학원/과외 등을 통해 프로그래밍 교육 제공자 및 수요자가 증가하고 있다. 또한 온라인으로 프로그래밍 영상을 제공하거나, 여러 학습 컨텐츠를 개발/제공하는 사람들도 많아졌다.In line with the government's mandate for SW education in 2018, there is an increasing demand for programming education, and now there is an increase in providers and users of programming education through private institutes / tutoring. In addition, many people are offering programming videos online or developing / providing various learning contents.

다만, 현재의 온라인 강의 제공 사이트들은 일 대 다의 관계이므로, 개인적인 수업을 받을 수 있는 환경은 제공하지 않으며, 학원/과외 또한 공간적/시간적 제약으로 인해 실제로 큰 시장이 형성되지 못하고 있다.However, current online lecture providing sites are one-to-many, so they do not provide an environment to receive individual lessons, and there is no big market due to the spatial / time constraints of academy / tutoring.

종래에는 IT 기술이 발달함에 따라, 화상 과외라는 개념이 도입되어 수학, 영어 등의 학문에 있어 강사와 학생이 온라인에서 수업을 하는 수요가 증가하고 있으나, 프로그래밍 화상 교육을 제공하는 인프라는 존재하지 않는다. 기존의 프로그래밍의 교육 시스템은 강사와 학생이 오프라인 상에서 직접 만날 수밖에 없고, 시간적, 공간적 제약이 막대하다. 그러므로 온라인에서 프로그래밍 화상 교육을 할 수 있는 멀티미디어 콘텐츠 제공 웹 기반 플랫폼 시스템이 요구되는 상황이다.In the past, as the IT technology has developed, the concept of the picture tutoring has been introduced, and there has been an increasing demand for lecturers and students to teach on-line in mathematics and English, . In the existing programming system, the instructor and the student have to meet each other in offline, and the time and space restrictions are enormous. Therefore, there is a need for a web-based platform system that provides multimedia content that can be used for programming video education online.

한국공개특허 제10-2015-0104661호, 오픈마켓형 온라인 교육 컨텐츠 중계방법Korean Patent Laid-Open No. 10-2015-0104661, an open market online education content relay method 한국공개특허 제10-2014-0011592호, 강의 프로그램 운영 지원장치 및 그 방법Korean Patent Laid-Open No. 10-2014-0011592, apparatus and method for supporting lecture program operation

본 발명은 상기한 문제점을 해결하기 위해 안출된 것으로서, 본 발명은 멀티미디어 콘텐츠 제공 시스템 및 그 제어방법을 제공하는 것을 그 목적으로 한다.SUMMARY OF THE INVENTION It is an object of the present invention to provide a multimedia contents providing system and a control method thereof.

그러나 본 발명의 목적은 상기에 언급된 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.However, the object of the present invention is not limited to the above-mentioned objects, and other objects not mentioned can be clearly understood by those skilled in the art from the following description.

본 발명의 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템은 WebSocket을 통해 제1 사용자 단말과 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 제1 사용자 단말과 제2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당하는 메인 서버; WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 제1 사용자 단말 및/또는 제2 사용자 단말에 전달하고, 제1 사용자 단말 또는 제2 사용자 단말에서 입력한 명령어 또는 코드들을 리눅스 서버에 전달하는 중계서버; 및 중계서버로부터 수신한 제1 사용자 단말과 제2 사용자 단말에서 입력한 명령어를 실행하는 리눅스 서버;를 포함하여 구성되는 것을 특징으로 한다. The system for providing multimedia contents according to an embodiment of the present invention transmits information necessary for WebRTC to each of the first user terminal and the second user terminal through WebSocket and instructs the first user terminal and the second user terminal Main server to allocate Linux server account for; A relay server for transmitting data received from the Linux server using the WebSocket to the first user terminal and / or the second user terminal in real time, and for transmitting commands or codes input from the first user terminal or the second user terminal to the Linux server; And a Linux server for executing a command input from the first user terminal and the second user terminal received from the relay server.

바람직하게는, 상기 메인 서버는 제1 사용자가 강의실 페이지에 입장할 때 설정하는 정보인 강의시간, 강의하고자 하는 언어, 및 원하는 키(전자화폐) 중 어느 하나 이상을 저장하며, 강의실에서 나갈 때는 정상적인 종료인지, 비정상적인 이벤트에 의한 종료인지 판단하고, 정상적인 종료일 경우 해당 강의실에 설정한 정보를 초기화하고, 비정상적인 이벤트에 의한 종료인 경우 현재까지의 수업 시간을 저장하는 DB 제어부를 포함하는 것을 특징으로 한다. Preferably, the main server stores at least one of a lecture time, a lecture language, and a desired key (electronic money), which is information set by the first user when entering the lecture room page, And a DB control unit for determining whether the event is ended or ending due to an abnormal event, initializing the information set in the classroom in case of a normal end, and storing the current class time in case of an end due to an abnormal event.

바람직하게는, 상기 메인 서버는 제1 사용자 단말과 제2 사용자 단말 간의 WebRTC 연결을 위한 정보를 공유하고, 강의종료 또는 30분마다 코인 지급하기를 포함하는 이벤트 정보를 제1 사용자 단말 또는 제2 사용자 단말에게 전달하는 WebSocket 통신부; 및 제1 사용자 단말 또는 제2 사용자 단말이 강의실에 접속할 때, 강의실 html 랜더링과 기존에 임시 저장한 코드 불러오기를 수행하고, 강의실 외의 요구에 대한 http 응답을 수행하는 http 통신부를 더 포함하는 것을 특징으로 한다. Preferably, the main server shares information for a WebRTC connection between the first user terminal and the second user terminal, and transmits event information including a lecture end or coin payment every 30 minutes to the first user terminal or the second user terminal, A WebSocket communication unit for delivering the information to the terminal; And an http communication unit performing the html rendering of the lecture room and the previously stored code loading when the first user terminal or the second user terminal is connected to the lecture room and performing an http response to the request out of the lecture room .

바람직하게는, 상기 중계서버는 리눅스 서버와의 통신을 위한 Paramiko SSH 통신부와, 제1,2 사용자 단말들과의 강의실 이벤트에 대한 통신을 위한 WebSocket 통신부와, 리눅스 서버의 각 계정이 할당되어있는지 여부를 저장하고 있는 목록을 저장하며, 제1,2 사용자에게 빈 계정 할당 및 리눅스 서버 계정 리스트 갱신을 수행하는 메모리를 더 포함하고, 상기 WebSocket 통신부는 제1,2 사용자 단말로부터의 리눅스 서버의 계정 할당 요청이나, 컴파일 또는 실행을 포함하는 명령 요청을 수신하고, 리눅스 서버로부터 온 결과를 사용자 단말들에 반환하는 것을 특징으로 한다. Preferably, the relay server includes a Paramiko SSH communication unit for communicating with a Linux server, a WebSocket communication unit for communicating a lecture room event with the first and second user terminals, whether or not each account of the Linux server is allocated Further comprising: a memory for storing a list storing an empty account and updating a Linux server account list to the first and second users, wherein the WebSocket communication unit allocates an account of a Linux server from the first and second user terminals Receives a command request including a request, compile or execution, and returns the result from the Linux server to the user terminals.

바람직하게는, 상기 리눅스 서버는 리눅스 서버와 중계 서버 사이에서의 데이터를 주고받는 SSH 통신부; 상기 SSH 통신부를 통해 전달받은 데이터 중 코드를 저장 및 컴파일하는 메모리를 포함하고, 상기 메모리 할당량은 제1 사용자 단말과 제2 사용자 단말 별로 제한이 걸려있으며, 상기 강의자 단말과 수강자 단말이 강의실 페이지에서 퇴장하면 저장된 코드를 삭제하게 되는 것을 특징으로 한다. Preferably, the Linux server includes an SSH communication unit for exchanging data between a Linux server and a relay server; And a memory for storing and compiling a code among the data transmitted through the SSH communication unit, wherein the memory allocation is limited for each of the first user terminal and the second user terminal, and the lecture terminal and the learner terminal are disconnected from the lecture room page The stored code is deleted.

바람직하게는, 상기 제1 사용자 단말의 화면에서 화면공유 버튼을 클릭하면, 화면 공유 창이 제2 사용자 단말의 화면에 생성되고, 제1 사용자 단말이 제2 사용자 단말과 공유하는 자료가 영상으로 제2 사용자 화면에 표시되는 것을 특징으로 한다.Preferably, when a screen sharing button is clicked on the screen of the first user terminal, a screen sharing window is created on the screen of the second user terminal, and data shared by the first user terminal with the second user terminal is displayed as a second And is displayed on the user screen.

본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 메인 서버가 WebSocket을 통해 제1 사용자 단말과 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 제1 사용자 단말과 제2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당하는 설정단계; 중계서버가 WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 제1 사용자 단말 및/또는 제2 사용자 단말에 전달하고, 제1 사용자 단말 또는 제2 사용자 단말에서 입력한 명령어 또는 코드들을 리눅스 서버에 전달하는 중계단계; 및 리눅스 서버가 중계서버로부터 수신한 제1 사용자 단말과 제2 사용자 단말에서 입력한 명령어를 실행하는 실행단계; 를 포함하여 구성되는 것을 특징으로 한다.A method of controlling a multimedia content providing system according to another embodiment of the present invention is a method of controlling a multimedia content providing system in which a main server transmits information required for a WebRTC to a first user terminal and a second user terminal via a WebSocket, A step of assigning an account of a Linux server for each class to each user terminal; The relay server transfers data received from the Linux server using the WebSocket to the first user terminal and / or the second user terminal in real time, and transmits the command or codes inputted from the first user terminal or the second user terminal to the Linux server A relaying step; And executing a command input from the first user terminal and the second user terminal received from the relay server by the relay server; And a control unit.

바람직하게는, 제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 표시단계;를 더 포함하여 구성되는 것을 특징으로 한다.Preferably, the method further includes a shell output result display step of delivering a result output to the shell of the Linux server account allocated to the first user terminal and the second user terminal to the first user terminal and the second user terminal, .

본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 강의 시간 또는 코인 정보를 포함하는 수업 정보를 데이터베이스에서 불러오고, 제1 사용자 단말 및 제2 사용자 단말 간의 WebRTC 커넥션을 맺어주는 사용자 단말 간 연결단계; 제1 사용자 단말 및 제2 사용자 단말에게 각각 리눅스 계정을 할당하는 리눅스 계정 할당단계; 제1 사용자 단말 또는 제2 사용자 단말로부터 컴파일 및 실행을 위한 명령어 및 코드를 중계서버를 통해 리눅스 서버에 전송하고, 리눅스 서버에서 코드를 컴파일 및 실행하는 컴파일 및 실행단계;A control method of a multimedia contents providing system according to another embodiment of the present invention includes loading instruction information including lecture time or coin information from a database and transmitting the instruction information to a user terminal Interconnection step; A Linux account assignment step of assigning a Linux account to each of the first user terminal and the second user terminal; A compiling and executing step of transmitting a command and code for compiling and execution from the first user terminal or the second user terminal to the Linux server via the relay server and compiling and executing the code in the Linux server;

WebRTC를 이용하여 강의실 페이지 내에서 제1 사용자와 제2 사용자가 편집하는 소스 파일들을 동기화시키는 소스 파일 동기화단계;를 포함하여 구성되는 것을 특징으로 한다.And a source file synchronization step of synchronizing source files edited by the first user and the second user in the classroom page using the WebRTC.

바람직하게는, 제1 사용자 단말과 제2 사용자 단말이 메인 서버와 연결하고, 제1 사용자 단말이 제2 사용자 단말 만을 위한 강의실 페이지를 개설하는 강의실 개설단계;를 더 포함하여 구성되는 것을 특징으로 한다.Preferably, the method further comprises the step of opening a lecture room where the first user terminal and the second user terminal are connected to the main server, and the first user terminal establishes a lecture room page only for the second user terminal .

바람직하게는, 제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 전달단계;를 더 포함하여 구성되는 것을 특징으로 한다.Preferably, the method further includes transmitting a shell output result to the first user terminal and the second user terminal and displaying a result output to the shell of the Linux server account assigned to the first user terminal and the second user terminal, .

바람직하게는, 상기 소스 파일 동기화단계는 소스 파일을 추가, 제거, 이름 변경을 할 때 실시간으로 사용자 단말 간에 동기화하는 과정; 또는 소스 파일의 내용을 편집할 때 실시간으로 사용자 단말 간에 동기화하는 과정;을 포함하는 것을 특징으로 한다.Preferably, the step of synchronizing the source files comprises the steps of synchronizing among the user terminals in real time when a source file is added, removed, or renamed; And synchronizing the contents of the source file with the user terminals in real time when editing the contents of the source file.

바람직하게는, 제1 사용자와 제2 사용자의 수업에 있어서 제2 사용자의 재화(코인)가 제1 사용자에게 일정 시간이 될 때마다 설정한 코인의 일부가 전달되는 결제단계를 더 포함하는 것을 특징으로 한다.Preferably, the method further comprises a settlement step of delivering a part of the coin set by the first user and the second user each time the goods (coin) of the second user becomes a predetermined time for the first user .

바람직하게는, 새로 고침, 뒤로 가기, 브라우저 종료 중 어느 하나에 의해 비정상적인 종료가 되어 수업 연결이 종료되었을 때, 연결을 복구하는 연결 복구단계를 더 포함하는 것을 특징으로 한다.Preferably, the method further comprises a connection restoring step of restoring the connection when the class connection is terminated due to abnormal termination by any one of refresh, backward, and browser termination.

본 발명의 다른 일실시예에 따른 컴퓨터로 판독 가능한 기록 매체는 멀티미디어 콘텐츠 제공 시스템의 제어방법을 실행하는 프로그램을 기록한 것을 특징으로 한다.A computer-readable recording medium according to another embodiment of the present invention records a program for executing a control method of a multimedia content providing system.

이상에서 설명한 바와 같이, 본 발명의 멀티미디어 콘텐츠 제공 시스템 및 그 제어방법을 이용하면, 프로그래밍 교육 제공자와 프로그래밍 교육 수강자가 거리적/시간적 제약 없이 온라인상에서 소스코드, 화상, 실행결과 등 멀티미디어 콘텐츠를 제공하여 프로그래밍 수업을 할 수 있다. 또한 WebRTC 기술을 이용하여 서버의 역할을 최소화하고, 클라이언트 간의 연결만으로 화상 채팅, 코드 공유 등을 할 수 있다. As described above, according to the multimedia contents providing system and the control method of the present invention, a programming education provider and a programming education attendee can provide multimedia contents such as source code, image, and execution result on-line without disturbing time / I can do programming lessons. In addition, using WebRTC technology, the role of server can be minimized and video chatting and code sharing can be done only by connecting between clients.

또한 본 발명에서 제공하는 IDE(Integrated Developement Environment, 통합 개발 환경)를 이용하여, 기존의 상용 프로그래밍 개발 도구와 비슷한 환경을 웹에서 사용할 수 있으며, 본 발명에서 제공하는 Linux Shell을 이용하여 Linux 환경에 대한 실습을 할 수 있고, 실시간 프로그래밍이 오프라인에서만 이루어지는 기존의 한계를 깨고, 온라인으로 웹에 접속하는 것으로 충분한 화상 프로그래밍 환경을 제공한다.In addition, an environment similar to a conventional commercial programming development tool can be used on the web by using the integrated development environment (IDE) provided in the present invention, and the Linux shell provided in the present invention can be used for a Linux environment Practice is available, and real-time programming breaks the existing limitations that only exist offline, and provides a sufficient image programming environment to access the web online.

도 1은 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템의 구성도를 도시한 것이다.
도 2는 본 발명에 따른 메인 서버의 구성도를 도시한 것이다.
도 3은 본 발명에 따른 중계서버의 구성도를 도시한 것이다.
도 4는 본 발명에 따른 리눅스 서버의 구성도를 도시한 것이다.
도 5는 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템(10000)이 제공하는 웹 기반 강의실의 전체적인 화면 구성을 보여준다.
도 6은 본 발명에 따른 화면 공유에 관한 구성을 도시한 것이다.
도 7은 본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법을 도시한 것이다.
도 8은 본 발명의 또 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법을 도시한 것이다.
도 9는 본 발명에 따른 제1 사용자(강의자)와 제2 사용자(수강자)의 수업 연결 과정의 전체적인 흐름도이다.
도 10은 본 발명에 따른 제1 사용자(강의자)와 제2 사용자(수강자)의 리눅스 커맨드 입력에 대한 처리 과정의 전체적인 흐름도이다.
1 is a block diagram of a system for providing multimedia contents according to the present invention.
2 is a block diagram of a main server according to the present invention.
FIG. 3 shows a configuration of a relay server according to the present invention.
FIG. 4 shows a configuration of a Linux server according to the present invention.
FIG. 5 shows the overall screen configuration of a web-based classroom provided by the multimedia contents providing system 10000 according to the present invention.
FIG. 6 illustrates a configuration of screen sharing according to the present invention.
FIG. 7 illustrates a method of controlling a multimedia contents providing system according to another embodiment of the present invention.
FIG. 8 illustrates a control method of a system for providing multimedia contents according to another embodiment of the present invention.
FIG. 9 is a general flowchart of a class connection process between a first user (lecturer) and a second user (lecturer) according to the present invention.
10 is a flowchart illustrating a process of inputting a Linux command of a first user (lecturer) and a second user (lecturer) according to the present invention.

본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.BRIEF DESCRIPTION OF THE DRAWINGS The present invention is capable of various modifications and various embodiments, and specific embodiments are illustrated in the drawings and described in detail in the detailed description. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성된다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the term "comprising" or "comprising" or the like is intended to specify the presence of stated features, integers, But do not preclude the presence or addition of features, numbers, steps, operations, components, parts, or combinations thereof.

도 1은 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템의 구성도를 도시한 것이다. 도 1에서 보듯이 웹 기반 플랫폼 시스템은 메인 서버(1), 강의자 단말(2), 수강자 단말(3), 중계서버(4) 및 복수의 리눅스서버(5)를 포함하여 구성될 수 있다. 메인 서버(1), 강의자 단말(2), 수강자 단말(3), 중계서버(4) 및 복수의 리눅스서버(5) 상호 간에는 네트워크(미도시)를 통해 연결되어 데이터 또는 정보를 송수신하게 된다. 네트워크는 유선 또는 무선 네트워크가 사용될 수 있다. 무선 네트워크로는 CDMA, LTE, WiFi, zigbee, Bluetooth 등이 사용 가능하다. 안전한 정보 전달을 위해서는 TCP/IP, UDP/IP 등의 통신 전송 프로토콜이 필요하다. 또한 전송하고자 하는 정보를 메시지 형태로 담아 전달하는 SMS, MMS 등의 메시지 전달 서비스가 필요하다. 유선 네트워크로는 IP 네트워크가 사용될 수 있다. 강의자 단말(2)과 수강자 단말(3)은 범용 컴퓨터(PC, Personal Computer), 노트북 PC, 테블릿 PC, 또는 스마트폰 중 어느 하나일 수 있다. 강의자 단말(2) 또는 수강자 단말(3)은 리눅스 서버로 계정 할당 요청이나, 컴파일, 실행 등의 명령 요청을 중계서버로 전송하고, 중계서버를 통해 리눅스 서버로부터 온 결과를 수신한다. 또한 Linux Shell 결과 출력 창으로 사용자와 연결된 Linux Shell의 표준 출력(stdout)을 강의자 단말 또는 수강자 단말과 같은 사용자 단말(2,3)에 출력한다.1 is a block diagram of a system for providing multimedia contents according to the present invention. 1, the web-based platform system may include a main server 1, a lecturer terminal 2, a learner terminal 3, a relay server 4, and a plurality of Linux servers 5. The main server 1, the lecturer terminal 2, the learner terminal 3, the relay server 4 and the plurality of Linux servers 5 are connected via a network (not shown) to transmit and receive data or information. The network may be a wired or wireless network. Wireless networks include CDMA, LTE, WiFi, zigbee, and Bluetooth. For secure information transmission, a communication transmission protocol such as TCP / IP and UDP / IP is required. In addition, message delivery services such as SMS and MMS are needed for carrying information to be transmitted in the form of a message. An IP network can be used as a wired network. The lecture terminal 2 and the learner terminal 3 may be any one of a general personal computer (PC), a notebook PC, a tablet PC, and a smart phone. The lecturer terminal 2 or the learner terminal 3 transmits a command request such as an account assignment request, compile or execution to the Linux server to the relay server and receives the result from the Linux server through the relay server. Also, the standard output (stdout) of the Linux Shell connected to the user is output to the user terminal (2, 3) such as the lecturer terminal or the learner terminal.

본 발명의 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템은 WebSocket을 통해 강의자 단말과 수강자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 강의자 단말과 수강자 단말에게 강의자 단말과 수강자 단말을 데이터 채널을 통해 P2P(peer to peer)로 연결해주는 메인 서버; 각 수업을 위한 리눅스 서버의 계정을 할당하고, WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 강의자 단말과 수강자 단말에 전달하고, 강의자 단말과 수강자 단말에서 입력한 명령들을 리눅스 서버에 전달하는 중계서버; 및 강의자 단말과 수강자 단말에 입력한 명령어를 실행하는 리눅스 서버;를 포함하여 구성될 수 있다.The multimedia contents providing system according to an embodiment of the present invention transmits information necessary for the WebRTC to each of the lecture terminal and the learner terminal through the WebSocket and transmits the lecture terminal and the learner terminal to the peer terminal a peer to peer connection; A relay server for assigning a Linux server account for each class, delivering data received from a Linux server using WebSocket to the lecture terminal and the learner terminal in real time, and transmitting the lecture terminal and the commands inputted from the learner terminal to the Linux server; And a Linux server that executes commands input to the lecture terminal and the learner terminal.

도 2는 본 발명에 따른 메인 서버의 구성도를 도시한 것이다. 도 2에서 보듯이, 메인 서버(1)는 DB 제어부(11), WebSocket 통신부(12), http 통신부(13)를 포함하여 구성된다.2 is a block diagram of a main server according to the present invention. As shown in FIG. 2, the main server 1 includes a DB control unit 11, a WebSocket communication unit 12, and an HTTP communication unit 13.

도 2에서 보듯이, DB 제어부(11)는 강의자가 강의자 단말(강의자 PC, 2)을 이용하여 강의실에 입장할 때 설정하는 정보(강의시간, 강의하고자 하는 언어, 원하는 키(전자화폐))를 저장하는 기능을 수행 한다. 또한, DB 제어부(11)는 강의자나 수강자가 강의실에서 나갈 때는 정상적인 종료인지, 비정상적인 이벤트에 의한 종료인지 판단한다. 정상적인 종료일 경우 해당 강의실에 설정한 정보를 초기화하고, 비정상적인 이벤트에 의한 종료인 경우 현재까지의 수업 시간 및 지불 내역을 저장한다.As shown in FIG. 2, the DB control unit 11 transmits information (a lecture time, a language to be lectured, a desired key (electronic money)) set when the lecturer enters the lecture room using the lecturer's terminal . Further, the DB control unit 11 judges whether the lecturer or the learner goes out of the room or whether it is a normal end or an end due to an abnormal event. In case of a normal end, the information set in the classroom is initialized. In case of termination due to an abnormal event, the current class time and payment history are stored.

WebSocket 통신부(12)는 강의자 단말(2)과 수강자 단말(3) 간의 WebRTC Connection을 위한 정보를 공유한다. 또한 강의종료, 30분마다 코인 지급하기 등의 이벤트 정보를 메인 서버(1)에서 각 사용자 단말(2,3)에게 전달하는 기능을 수행한다.The WebSocket communication unit 12 shares information for the WebRTC connection between the lecture terminal 2 and the learner terminal 3. [ And also transmits event information such as the end of the lecture and coin dispensing every 30 minutes to the user terminals 2 and 3 in the main server 1.

http(HyperText Transfer Protocol) 통신부(13)는 각 사용자 단말(2,3)이 강의실에 접속할 때, 강의실 html(HyperText Markup Language) 랜더링, 기존에 임시 저장한 코드 불러오기 등의 기능을 수행한다. 또한 강의실 외의 요구(Request)에 대한 http respond(응답)을 수행한다.The hypertext transfer protocol (http) communication unit 13 performs rendering of html (HyperText Markup Language), loading of previously stored codes, etc. when each user terminal 2, 3 connects to the classroom. It also performs http response (response) to requests outside the classroom.

도 3은 본 발명에 따른 중계서버의 구성도를 도시한 것이다.FIG. 3 shows a configuration of a relay server according to the present invention.

도 3에서 보듯이, 중계서버(4)는 통신부(40)와 메모리부(43)로 포함하여 구성된다. 통신부(40)는 리눅스 서버(5)와의 통신을 위한 Paramiko SSH(시큐어 셸, secure shell) 통신부(42)와, 사용자와의 강의실 이벤트에 대한 통신을 위한 WebSocket 통신부(41)를 포함하여 이루어진다. WebSocket 통신부(41)는 강의자 또는 수강자의 사용자 단말(2,3)로부터의 요청, 즉 리눅스 서버의 계정 할당 요청이나, 컴파일 또는 실행을 포함하는 명령 요청을 수신하고, 리눅스 서버로부터 온 결과를 사용자 단말들에 반환하는 기능을 수행한다. 메모리부(43)는 리눅스 서버(5)의 각 계정이 할당되어있는지 여부를 저장하고 있는 목록(리스트)들을 저장하고 있으며, 사용자에게 빈 계정 할당 및 리눅스 서버 계정 리스트 갱신을 수행한다. As shown in FIG. 3, the relay server 4 includes a communication unit 40 and a memory unit 43. The communication unit 40 includes a Paramiko SSH (secure shell) communication unit 42 for communication with the Linux server 5 and a WebSocket communication unit 41 for communicating with a classroom event with the user. The WebSocket communication unit 41 receives a command request including a request from a lecturer or a lecturer or a user terminal 2 or 3 of the lecturer, that is, an account assignment request, compilation or execution of a Linux server, And returns the result to the user. The memory unit 43 stores a list storing the accounts of each account of the Linux server 5, and performs an empty account assignment and a Linux server account list update to the user.

도 4는 본 발명에 따른 리눅스 서버의 구성도를 도시한 것이다.FIG. 4 shows a configuration of a Linux server according to the present invention.

도 4에서 보듯이, 리눅스 서버(5)는 SSH 통신부(51), 메모리부(52)를 포함하여 구성된다. SSH 통신부(51)는 리눅스 서버와 중계 서버 사이에서의 데이터를 주고받는 역할을 한다. 메모리부(52)는 각 사용자가 화면상의 "컴파일 및 실행" 버튼(400)을 누를 경우, SSH 통신부(51)를 통해 전달받은 명령어 및 코드를 저장 및 컴파일하는 역할을 수행한다. 메모리 할당량은 각 사용자 별로 제한이 걸려있으며, 사용자가 강의실에서 퇴장하면 저장된 코드를 삭제하게 된다. SSH 통신부(51)는 중계 서버가 송신한 사용자가 원하는 동작에 맞는 명령어를 수신하고, 명령어를 메모리부(52)로 전달한다. 메모리부(52)는 명령어를 수신하여 실행하며, 실행 결과를 SSH 통신부로 반환하고, 사용자마다 할당된 메모리보다 크면 사용하면 실행을 중지한다. As shown in FIG. 4, the Linux server 5 includes an SSH communication unit 51 and a memory unit 52. The SSH communication unit 51 serves to exchange data between the Linux server and the relay server. The memory unit 52 stores and compiles commands and codes received through the SSH communication unit 51 when each user presses the "compile and execute" button 400 on the screen. The memory quota is limited for each user, and when the user leaves the classroom, the stored code is deleted. The SSH communication unit 51 receives a command corresponding to a desired operation of the user transmitted from the relay server, and transmits the command to the memory unit 52. The memory unit 52 receives and executes the instruction, returns the execution result to the SSH communication unit, and stops the execution if it is larger than the memory allocated to each user.

도 5는 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템(10000)이 제공하는 웹 기반 강의실의 전체적인 화면 구성을 보여준다. FIG. 5 shows the overall screen configuration of a web-based classroom provided by the multimedia contents providing system 10000 according to the present invention.

도 5에서 보듯이, 강의실의 화면 중 식별번호 100은 코드 편집을 위한 코드 편집 창, 200은 Linux Shell 결과 출력 창으로 사용자와 연결된 Linux Shell의 표준 출력(stdout)을 사용자 단말에 출력하는 창이다. 300은 커맨드 입력 창으로, 사용자 단말에서 Linux Shell의 표준 입력(stdin)에 전달할 명령을 입력 하는 창이다. 400은 컴파일 및 실행 버튼으로, 컴파일 명령어 및 실행 명령어를 리눅스 서버에 전달하는 버튼이다. 500은 실행중지 버튼으로, 리눅스 서버에 실행중인 프로세스에 실행 프로세스 종료 인터럽트(Ctrl^c)를 전달하는 버튼이다. 600은 수업 끝내기 버튼으로, 강의자가 메인 서버에 수업 종료 신호를 보내는 버튼이다. 700은 임시저장 버튼으로, 사용자가 소스 파일들을 메인 서버의 데이터베이스(DB)에 저장하는 버튼이다. 800은 자료화면 공유 버튼으로, 제1 사용자(강의자)가 제2 사용자(수강자)에게 공유할 자료를 선택하는 페이지로 이동하는 버튼이다. 900은 상대방이 웹 카메라로 촬영한 화상을 수신하여 보여주는 상대방 화면 창이다. 1000은 본인이 웹 카메라로 촬영한 화상을 보여주는 본인 화면 창이다. 1100은 소스 파일 디렉터리 창으로, 제1, 2 사용자의 소스 파일 디렉터리를 보여주는 창이다. 1200은 탭을 의미하며, 새로운 소스 파일을 작업을 위해 새로이 탭을 추가할 수 있다.As shown in FIG. 5, the identification number 100 in the classroom screen is a code editing window for code editing, and 200 is a window for outputting the standard output (stdout) of the Linux Shell connected to the user to the output window of the Linux Shell to the user terminal. 300 is a command input window and is a window for inputting a command to be transmitted to the standard input (stdin) of the Linux Shell at the user terminal. 400 is a compile and execute button that passes compilation commands and execution commands to the Linux server. 500 is a stop button that sends a process interruption interrupt (Ctrl ^ c) to a process running on the Linux server. 600 is the end button of the class, and the lecturer sends the class end signal to the main server. Reference numeral 700 denotes a temporary storage button, which is used by the user to store the source files in the database (DB) of the main server. Reference numeral 800 denotes a data screen sharing button, which is a button for a first user (lecturer) to go to a page for selecting data to be shared to a second user (student). 900 is a counterpart window on which the other party receives and displays the image shot by the web camera. 1000 is a window of the user's own screen showing the image taken by the web camera. Reference numeral 1100 denotes a source file directory window, which is a window showing the source file directories of the first and second users. 1200 means tab, and you can add a new tab for working on a new source file.

도 6은 본 발명에 따른 화면 공유에 관한 구성을 도시한 것이다. 도 5에서 800은 자료화면 공유 버튼으로, 제1 사용자(강의자)가 제2 사용자(수강자)에게 공유할 자료를 선택하는 페이지로 이동하는 버튼이다. 강의자 단말 또는 수강자 단말의 자료화면 공유 버튼이 클릭되면, 도 6의 화면 공유 창이 제2 사용자 단말의 화면에 생성된다. 강의자 단말에 있는 자료화면 공유 버튼만 클릭해도, 수강자 단말의 화면에 별도의 자료 공유 창이 생성될 수 있고, 또는 수강자 단말이 화면 공유 버튼을 클릭하면 자료 공유 창이 생성될 수도 있다. FIG. 6 illustrates a configuration of screen sharing according to the present invention. In FIG. 5, 800 is a data screen sharing button, which is a button for a first user (lecturer) to go to a page for selecting data to be shared with a second user (student). When the data screen sharing button of the lecturer terminal or the learner terminal is clicked, a screen sharing window of Fig. 6 is created on the screen of the second user terminal. A separate data sharing window may be created on the learner terminal screen or a data sharing window may be created when the learner terminal clicks the screen sharing button even if only the data screen sharing button on the lecturer terminal is clicked.

도 6에서 보듯이, 식별번호 S100은 강의자가 공유한 화면 창으로, 제1 사용자(강의자)가 공유한 자료를 영상으로 보여주는 창이다. S200은 전체 화면 버튼으로, S100의 화면을 전체 화면으로 만드는 버튼이다. S300은 일시 정지 버튼으로, S100의 화면을 일시 정지 하는 버튼이다. 도 6에서 보듯이, 강의자가 수강자와 공유하는 자료를 영상으로 화면에 표시하고, 전체화면(S200) 버튼을 누르면 수강자의 단말의 디스플레이 화면 전체로 공유 화면이 표시되고, 공유를 정지하고 싶은 경우에는 일시정지(S300) 버튼을 누르면 된다.As shown in FIG. 6, the identification number S100 is a screen window shared by the lecturer, and is a window for displaying data shared by the first user (lecturer) as images. S200 is a full-screen button, and is a button for making the screen of S100 a full screen. S300 is a pause button for temporarily stopping the screen of S100. As shown in FIG. 6, if a student shares a lecture with a student and displays a video image on the screen and a full screen (S200) button is pressed, the sharing screen is displayed on the entire display screen of the learner's terminal. Press the pause button (S300).

도 1 및 도 5에서 보듯이, 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템(10000)에서는 제1 사용자 단말(강의자 단말, 2)과 제2 사용자 단말(수강자 단말, 3) 간의 P2P(peer to peer) Connection(통신 연결)을 통해 제1 사용자와 제2 사용자의 영상 데이터를 상호 전송한다. 이를 통해 기존의 화상 채팅 시에 서비스 제공 서버에서 사용자 단말에 영상 데이터(도 5의 900, 1000)를 전송하는 과정에서 발생하는 서비스 제공 서버에서의 부하를 해결하게 된다.1 and 5, in the multimedia contents providing system 10000 according to the present invention, a peer to peer connection (P2P) connection between a first user terminal (lecturer terminal 2) and a second user terminal (Communication connection) between the first user and the second user. Accordingly, the load on the service providing server generated during the process of transmitting the video data (900, 1000 in FIG. 5) from the service providing server to the user terminal during the existing video chatting is solved.

또한, 본 발명은 제1 사용자 단말(강의자 단말)과 제2 사용자 단말(수강자 단말)에서 동시에 프로그래밍 코드를 편집할 수 있는 코드 편집 창(도 5의 100)을 구현한다. 이 코드 편집 창(100)은 각 사용자의 단말에 html 및 Jquery(브라우저 호환성이 있는 HTML 속 자바스크립트 라이브러리이며 클라이언트 사이드 스크립트 언어를 단순화 할 수 있도록 설계됨)를 통해 구현되며, 각 사용자가 코드를 입력하면 각 코드의 문법에 따라 글자의 색과 들여쓰기가 달라진다. 또한 각 사용자의 프로그래밍 편의를 위해 각 사용자 단말(2,3)에 새 탭(1200)을 추가할 수 있는 기능을 제공한다. 해당 탭(1200)을 이용하여 각 사용자는 한 번에 여러 소스 파일을 편집할 수 있다.Further, the present invention implements a code editing window (100 of FIG. 5) capable of simultaneously editing programming codes from a first user terminal (lecturer terminal) and a second user terminal (student attending terminal). The code editing window 100 is implemented by html and Jquery (a JavaScript compatible HTML library with browser compatibility and designed to simplify the client side script language) for each user terminal, and when each user inputs a code The color and indentation of the characters differs according to the grammar of each code. It also provides the ability to add a new tab 1200 to each user terminal 2, 3 for ease of programming by each user. Using the tab 1200, each user can edit multiple source files at one time.

또한, 본 발명은 제1 사용자(강의자)의 효율적인 강의를 위해, 제1 사용자(강의자)가 원하는 자료를 어플리케이션 단위(워드 파일, pdf 파일 등)로 제2 사용자(수강자)에게 영상을 제공하는 형식을 취한다. 실시간으로 공유되는 이 영상 또한 서비스 제공 서버의 부하 없이 제1, 2 사용자 단말 간의 P2P Connection을 통해 구현된다.The present invention also provides a method for providing an image to a second user (student) by an application unit (a word file, a pdf file, or the like) by a first user (lecturer) Lt; / RTI > This image, which is shared in real time, is also realized through P2P Connection between first and second user terminals without load of service providing server.

또한, 본 발명은 제2 사용자(수강자)의 학습을 돕기 위해 작성한 코드를 실제로 컴파일하고, 실행한 결과를 제2 사용자의 단말(3)에 보여주는 기능을 제공한다. 또한 Linux Shell을 제1, 2 사용자의 단말에 제공하며, 제1, 2 사용자는 해당 Shell을 이용하여 실제Linux 명령어를 입력(300)하고, 결과를 각 사용자 단말(200)에서 볼 수 있도록 한다. 또한 제1, 2 사용자는 Linux Shell을 사용함에 있어서, 실행중지(Ctrl^c) 등의 명령 또한 사용할 수 있도록 별도의 중계 서버(4)를 통해 처리한다.In addition, the present invention provides a function of actually compiling a code created to help the learning of a second user (student) and showing the result of execution to the terminal 3 of the second user. Also, the Linux Shell is provided to the terminals of the first and second users, and the first and second users input the actual Linux commands (300) using the corresponding Shell and view the results in the respective user terminals (200). In addition, the first and second users use a separate relay server 4 in order to use a command such as stop (Ctrl ^ c) in using the Linux Shell.

도 7은 본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법을 도시한 것이다. FIG. 7 illustrates a method of controlling a multimedia contents providing system according to another embodiment of the present invention.

도 7에서 보듯이, 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 설정단계(S1), 중계단계(S2), 실행단계(S3), 표시단계(S4)를 포함하여 구성될 수 있다.As shown in FIG. 7, the control method of the system for providing multimedia contents according to the present invention may include a setting step S1, a relay step S2, an execution step S3, and a displaying step S4.

본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 메인 서버가 WebSocket을 통해 제1 사용자 단말과 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 제1 사용자 단말과 제2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당하는 설정단계; 중계서버가 WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 제1 사용자 단말 및/또는 제2 사용자 단말에 전달하고, 제1 사용자 단말 또는 제2 사용자 단말에서 입력한 명령어 또는 코드들을 리눅스 서버에 전달하는 중계단계; 및 리눅스 서버가 중계서버로부터 수신한 제1 사용자 단말과 제2 사용자 단말에서 입력한 명령어를 실행하는 실행단계; 및 제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 표시단계;를 포함하여 구성될 수 있다.A method of controlling a multimedia content providing system according to another embodiment of the present invention is a method of controlling a multimedia content providing system in which a main server transmits information required for a WebRTC to a first user terminal and a second user terminal via a WebSocket, A step of assigning an account of a Linux server for each class to each user terminal; The relay server transfers data received from the Linux server using the WebSocket to the first user terminal and / or the second user terminal in real time, and transmits the command or codes inputted from the first user terminal or the second user terminal to the Linux server A relaying step; And executing a command input from the first user terminal and the second user terminal received from the relay server by the relay server; And a shell output result display step of delivering the result output to the shell of the Linux server account allocated to the first user terminal and the second user terminal to the first user terminal and the second user terminal and displaying the shell output result .

도 8은 본 발명의 또 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법을 도시한 것이다. 도 8에서 보듯이, 본 발명에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 강의실 개설단계(S10), 사용자 단말 간 연결 단계(S20), 리눅스 계정 할당 단계(S30), 컴파일 및 실행 단계(S40), 쉘 출력 결과 전달 단계(S50), 소스 파일 동기화 단계(S60), 결제 단계(S70), 및 연결 복구 단계(S80)를 포함하여 구성될 수 있다.FIG. 8 illustrates a control method of a system for providing multimedia contents according to another embodiment of the present invention. 8, the control method of the multimedia contents providing system according to the present invention includes a classroom opening step S10, a user terminal connecting step S20, a Linux account assigning step S30, a compiling and executing step S40, A shell output result delivery step S50, a source file synchronization step S60, a settlement step S70, and a connection recovery step S80.

본 발명의 다른 일실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 제1 사용자(강의자) 단말과 제2 사용자(수강자) 단말이 메인 서버와 연결하고, 제1 사용자 단말이 제2 사용자 단말 만을 위한 강의실 페이지를 개설하는 강의실 개설단계; 수업에 필요한 정보(강의 시간 및 코인 정보 포함)를 데이터베이스에서 불러오고, 제1 사용자 및 제2 사용자 단말 간의 WebRTC를 맺어주는 사용자 단말 간 연결단계; 제1 사용자 단말 및 제2 사용자 단말에게 각각 리눅스 계정을 할당하는 리눅스 계정 할당단계; 제1 사용자 단말 또는 제2 사용자 단말로부터 컴파일 및 실행을 위한 명령(커맨드)인 신호 및 코드를 중계서버를 통해 리눅스 서버에 전송하고, 리눅스 서버에서 코드를 컴파일 및 실행하는 컴파일 및 실행단계; 제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 전달단계; 및 WebRTC를 이용하여 서버의 부하 없이 강의실 페이지 내에서 제1 사용자와 제2 사용자가 편집하는 소스 파일들을 동기화시키는 소스 파일 동기화단계;를 포함하여 구성될 수 있다.A control method of a multimedia contents providing system according to another embodiment of the present invention is a method of controlling a multimedia contents providing system in which a first user terminal and a second user terminal connect to a main server and a first user terminal connects only to a second user terminal Opening a classroom to open a classroom page; A step of bringing in information (including lecture time and coin information) necessary for the lecture from the database, and establishing a WebRTC between the first user and the second user terminal; A Linux account assignment step of assigning a Linux account to each of the first user terminal and the second user terminal; A compiling and executing step of transmitting a signal and a command (command) for compiling and executing from the first user terminal or the second user terminal to the Linux server via the relay server and compiling and executing the code in the Linux server; A shell output result delivery step of delivering a result output to the shell of the Linux server account allocated to the first user terminal and the second user terminal to the first user terminal and the second user terminal for display; And a source file synchronization step of synchronizing the source files edited by the first user and the second user in the classroom page without the load of the server using the WebRTC.

도 9는 본 발명에 따른 제1 사용자(강의자)와 제2 사용자(수강자)의 수업 연결 과정의 전체적인 흐름도이다. 도 9는 도 8의 강의실 개설단계(S10)와 사용자 단말 간 연결 단계(S20)를 도시한 것이다.FIG. 9 is a general flowchart of a class connection process between a first user (lecturer) and a second user (lecturer) according to the present invention. FIG. 9 shows a step of establishing a classroom (S10) and a connection step (S20) between user terminals of FIG.

도 10은 본 발명에 따른 제1 사용자(강의자)와 제2 사용자(수강자)의 리눅스 커맨드 입력에 대한 처리 과정의 전체적인 흐름도이다. 도 10은 도 8의 컴파일 및 실행 단계(S40) 및 쉘 출력 결과 전달 단계(S50)를 도시한 것이다.10 is a flowchart illustrating a process of inputting a Linux command of a first user (lecturer) and a second user (lecturer) according to the present invention. FIG. 10 shows the compilation and execution step (S40) and the shell output result delivery step (S50) of FIG.

도 8 내지 도 10을 참조하여, 본 발명의 멀티미디어 콘텐츠 제공 시스템의 제어방법을 이하에서 설명한다.8 to 10, a control method of the multimedia contents providing system of the present invention will be described below.

제1 단계(S10)로, 도 9에서 보듯이, 제1 사용자(강의자)와 제2 사용자(수강자)가 자신의 단말(2,3)을 이용하여 수강신청 메커니즘을 통해 메인 서버(1)와 연결(커넥션)이 이루어지면, 제1 사용자가 제2 사용자만을 위한 강의실 페이지(도 5 참조)를 개설하는 단계를 수행한다. 수강자 아이디, 강의실 번호 또는 비밀번호를 이용하여 지정된 사용자가 아닌 다른 사용자들은 해당 강의실 페이지(도 5 참조)에 들어갈 수 없도록 한다. 제1 단계는 도 9의 강의실 개설/코인 설정, 2. 강의 시간, 코인 정보 저장, 및 3. 강의실 접속 과정을 포함한다.9, the first user (lecturer) and the second user (lecturer) can use the terminals 2 and 3 of his / her own to access the main server 1 and the main server 1 through the enrollment application mechanism Once the connection is made, the first user performs the step of opening a classroom page (see FIG. 5) for the second user only. The user other than the designated user can not enter the corresponding classroom page (refer to FIG. 5) by using the student ID, the classroom number or the password. The first step includes setting up a lecture room / coin setting in Fig. 9, a lecture time, storing coin information, and accessing a lecture room.

제2 단계(S20)로, 도 9에서 보듯이 강의실 페이지(도 5 참조)가 개설된 후, 수업에 필요한 정보(강의 시간, 코인 정보 등)를 데이터베이스에서 불러와서 설정하고 사용자 단말 간의 WebRTC를 맺어주는 단계를 수행한다. 제 2 단계는 도 9에서 4. 웹 소켓, 5, WebRTC 및 6. 강의실 생성 과정을 포함한다.After the lecture room page (see Fig. 5) is opened as shown in Fig. 9, the information (lecture time, coin information, etc.) necessary for the lecture is retrieved from the database and set up and WebRTC is established between the user terminals Perform the steps. The second step includes steps 4, 5, WebRTC and step 6 in FIG.

제 3단계(S30)로, 제1 사용자 단말 및 제2 사용자 단말에게 각각 리눅스 계정을 할당하는 단계를 수행한다.In a third step S30, a step of allocating a Linux account to each of the first user terminal and the second user terminal is performed.

제4 단계(S40)로, 도 5에서 보듯이 화면상의 사용자의 단말(2,3)에서 컴파일 및 실행이라는 버튼(또는 아이콘)을 클릭하면, 도 10에서 보듯이 컴파일 및 실행을 위한 명령(커맨드)인 신호 및 코드를 중계서버(4)로 전송하고, 중계 서버(4)는 신호 및 코드를 리눅스 서버에 전송하고, 리눅스 서버에서 코드를 컴파일 및 실행하는 단계를 수행한다.5, when a button (or an icon) for compiling and execution is clicked on the terminals 2 and 3 of the user on the screen, as shown in FIG. 5, commands for compiling and execution ) To the relay server 4, and the relay server 4 transmits the signal and the code to the Linux server, and compiles and executes the code in the Linux server.

제5 단계(S50)로, 도 10에서 보듯이, 각 사용자에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 사용자의 단말(2,3)에 전달하여, 화면에 표시하는 단계를 수행한다.In the fifth step S50, as shown in FIG. 10, the result output to the shell of the Linux server account allocated to each user is transmitted to the terminals 2 and 3 of the user and displayed on the screen.

제6 단계(S60)로, 도 5에서 보듯이, WebRTC를 이용하여 서버의 부하 없이 강의실(도 5 참조) 내에서 제1 사용자와 제2 사용자가 편집하는 소스 파일들을 동기화시키는 단계를 수행한다. 동기화 기능 중 제 1기능은 소스 파일을 추가, 제거, 이름 변경을 할 때 실시간으로 사용자 간에 동기화하는 기능이며, 제 2기능은 소스 파일의 내용을 편집할 때 실시간으로 사용자 간에 동기화하는 기능이다.In a sixth step S60, as shown in FIG. 5, a step of synchronizing source files edited by the first user and the second user in the classroom (see FIG. 5) without load of the server is performed using the WebRTC. The first function of the synchronization function is to synchronize users in real time when adding, removing and renaming source files. The second function is a function of synchronizing users in real time when editing the contents of a source file.

제7 단계(S70)로, 제1 사용자와 제2 사용자의 수업에 있어서 제2 사용자의 재화(코인)가 제1 사용자에게 일정 시간이 될 때마다 설정한 코인의 일부가 전달되는 단계를 수행한다. 제1 사용자 및 제2 사용자가 수업 도중 비정상적인 종료로 인해, 제1 사용자가 금액을 전액 지불 받지 못하는 상황을 방지한다. 또한, 제2 사용자가 수업의 불만족으로 인해 수업을 중단하고자 할 때, 수업한 시간에 비례하여 금액을 제1 사용자에게 지불 할 수 있도록 한다. 기존의 화상과외 플랫폼에서는 위의 문제를 막기 위해 중개업자가 제2 사용자에게 미리 재화를 받은 후, 수업 내용을 판단해서 제1 사용자에게 전달한다. 이 절차를 간소화해서 중개업자의 역할을 최소화한다.In the seventh step S70, a part of the set coins is delivered each time the goods (coin) of the second user becomes a predetermined time for the first user in the class of the first user and the second user . The first user and the second user can avoid a situation where the first user can not receive the full amount due to the abnormal termination during the class. In addition, when the second user desires to stop the class due to dissatisfaction of the class, the amount of money can be paid to the first user in proportion to the time of the class. In order to prevent the above problem in the conventional image tutoring platform, the intermediary receives the goods in advance to the second user, and then determines the contents of the instruction and delivers the contents to the first user. Minimize the role of intermediaries by simplifying this procedure.

제8 단계(S80)로, 비정상적인 종료(새로 고침, 뒤로 가기, 브라우저 종료 등)에 수업 연결이 종료되었을 때, 연결을 복구하는 단계를 수행할 수 있다.In the eighth step S80, when the class connection is terminated abnormally (refresh, backward, browser termination, etc.), the connection can be restored.

이하에서는 도 8 내지 도 10을 참조하여 본 발명의 멀티미디어 콘텐츠 제공 시스템의 제어방법을 구체적으로 설명한다.Hereinafter, a method of controlling the multimedia contents providing system of the present invention will be described in detail with reference to FIGS. 8 to 10. FIG.

제1 단계(S10)는 제1 사용자(강의자)와 제2 사용자(수강자)가 자신의 단말(2,3)을 이용하여 수강신청 메커니즘을 통해 메인 서버(11)와 유선 또는 무선을 통해 통신 연결(커넥션)이 이루어지면, 제1 사용자가 제2 사용자만을 위한 강의실 페이지(도 5 참조)를 개설하는 단계이다.In the first step S10, a first user (a lecturer) and a second user (a student attending a lecture) communicate with a main server 11 through a course entry mechanism using their terminals 2 and 3 through a wired or wireless connection (Connection) is made, the first user opens a classroom page (see FIG. 5) for the second user only.

제1 단계에서, 제2 사용자는 자신의 단말을 통해 제1 사용자(강의자)의 정보를 나타내는 홈 페이지에서 원하는 강의자에게 수강 신청을 요청할 수 있다. 수강 신청을 요청받은 제1 사용자(강의자)는 자신의 단말을 통해 제2 사용자의 수강을 수락 혹은 거절할 수 있다. 제1 사용자(강의자)가 수강을 수락을 할 경우, 메인 서버(1)는 해당 강의자(이하 제1 사용자)와 제2 사용자의 연결 정보를 데이터베이스(DB)에 저장한다. 제1 사용자가 제2 사용자를 대상으로 강의실을 개설하면, 메인 서버(1)는 강의실 개설을 요청한 제1 사용자에 대해 UUID(universally unique identifier)를 이용하여 숫자와 영문자로 이루어진 6자리의 고유 식별자를 생성한다. 이 식별자를 이용하여 생성된 강의실 페이지 URL(Uniform Resource Locator)을 데이터베이스(DB)에 저장한다. In the first step, the second user can request a lecture attendance request to a desired lecturer through a homepage showing information of a first user (lecturer) through his / her terminal. The first user (lecturer) who has been requested to enroll may accept or reject the second user's enrollment through his / her terminal. When the first user (lecturer) accepts the lecture, the main server 1 stores the connection information of the lecturer (hereafter, the first user) and the second user in the database DB. When the first user establishes a classroom for the second user, the main server 1 uses a universally unique identifier (UUID) for the first user who has requested the opening of the classroom, . And stores the URL (Uniform Resource Locator) of the classroom room page generated using this identifier in the database (DB).

또한 제1 사용자가 강의실을 개설하면 제2 사용자의 연결된 강의자 정보 페이지에는 제1 사용자의 강의실에 접근할 수 있는 버튼 또는 아이콘이 활성화 된다. 제2 사용자가 해당 버튼 또는 아이콘을 누를 경우, 메인 서버(1)는 DB에 저장된 제1 사용자의 강의실 URL 정보를 통해 제2 사용자를 제1 사용자가 개설한 강의실로 이동하게 한다. 해당 강의실에 제1,2 사용자를 제외한 다른 사용자들의 접근을 막기 위하여 제1 사용자가 강의실을 개설할 때, DB에 제2 사용자의 아이디, 개설된 강의실 번호 또는 비밀번호를 저장한다. 추후 강의실(도 5 참조)에 접속 요청을 보내는 사용자의 아이디를 DB에 저장된 제2 사용자(수강자)의 아이디와 비교하여, 다른 경우에 접근을 거부하고 메인 페이지로 수신인주소고치기(redirect)를 하게 한다.Also, when the first user opens the classroom, a button or icon for accessing the classroom of the first user is activated on the connected lecturer information page of the second user. When the second user presses the corresponding button or icon, the main server 1 causes the second user to move to the lecture room established by the first user through the lecture room URL information of the first user stored in the DB. When a first user opens a classroom to prevent access to other users except for the first and second users in the classroom, the ID of the second user, the opened classroom number or the password is stored in the DB. The ID of the user who sends the access request to the classroom (see FIG. 5) is compared with the ID of the second user (student) stored in the DB, and the access is rejected in other cases and the address is redirected to the main page .

제2 단계(S20)는 강의실이 개설된 후, 수업에 필요한 정보를 설정하고 사용자간의 WebRTC를 맺어주는 단계이다.The second step S20 is a step of establishing the information necessary for the class and establishing the WebRTC among the users after the class room is opened.

제2 단계에서, 제1 사용자는 자신에게 수업을 신청한 제2 사용자에 한해 수업 진행을 위해 강의실(도 5 참조)을 개설할 수 있다. 제1 사용자가 강의실 개설 버튼을 누를 경우, 메인 서버(1)에는 제1, 2 사용자를 위한 WebSocket이 생성되며 제1 사용자는 해당 WebSocket을 통해 메인 서버(1)에 연결을 시도한다. 제1 사용자의 단말(2)과 메인 서버(1) 간의 WebSocket 연결이 설립 된 후, 제1 사용자는 단말(2)을 통해 해당 강의실에서 진행하고자 하는 수업 시간, 제2 사용자에게 원하는 재화(코인), 및 강의하고자 하는 언어(C, Python, Java 등) 중 하나 이상을 설정하게 된다. 가령 재화는 설정하지 않고, 강의 비용에 대해 별도의 결제 절차를 밟을 수도 있다.In the second step, the first user can open a lecture room (see Fig. 5) for the lecture process only for the second user who has applied for the lecture. When a first user presses a button for opening a classroom, a WebSocket for first and second users is created in the main server 1, and the first user attempts to connect to the main server 1 through the WebSocket. After establishing a WebSocket connection between the terminal 2 of the first user and the main server 1, the first user transmits the class time to be performed in the classroom through the terminal 2, the desired coin to the second user, , And the language to be taught (C, Python, Java, etc.). For example, you may set up a separate payment procedure for the cost of the lecture, without setting the good.

또한, 제1 사용자가 단말(2)을 통해 설정을 완료하면, ajax(Asynchronous JavaScript and XML, 에이잭스)를 통해 메인 서버(1)에 해당 설정 값을 전달하고, 메인 서버는 전달받은 강의실(도 5 참조) 정보를 DB에 저장하고, 제2 사용자가 제1 사용자의 강의실(도 5 참조)에 입장할 수 있는 버튼을 활성화 한다. 제2 사용자가 강의실(도 5 참조) 입장 버튼을 눌러 강의실(도 5 참조)에 입장할 경우, 제2 사용자는 자신의 단말(3)을 이용하여 WebSocket을 통해 메인 서버(1)에 연결을 시도한다. 메인 서버(1)와 제2 사용자 단말(3) 간의 WebSocket 연결이 성립된 경우, 메인 서버(1)는 WebSocket을 통해 제1 사용자와 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보(각 사용자의 공인 IP 등)를 전달한다. 제2 사용자는 자신의 단말(3)을 이용하여 WebSocket을 통해 전달받은 정보를 이용하여 제1 사용자 단말에게 WebRTC을 시도한다. 메인 서버는 제1 사용자와 제2 사용자 단말 간의 WebRTC이 성공하면 제2 사용자 단말에게 DB에 저장된 강의실 정보(수업시간, 요구하는 코인의 양, 수업 언어)를 보여준다. 제2 사용자가 해당 정보를 읽고 자신의 단말을 통해 동의한다는 신호를 메인 서버로 보내오면, 제1,2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당한다.When the first user completes the setting through the terminal 2, the setting value is transmitted to the main server 1 via ajax (Asynchronous JavaScript and XML, Ajax) Reference information) in the DB, and activates a button allowing the second user to enter the lecture room of the first user (see Fig. 5). When the second user enters the classroom (see FIG. 5) by pressing the enter button in the classroom (see FIG. 5), the second user attempts to connect to the main server 1 via WebSocket using his or her terminal 3 do. When a WebSocket connection between the main server 1 and the second user terminal 3 is established, the main server 1 transmits information necessary for WebRTC between the first user and the second user terminal via WebSocket Public IP, etc.). The second user attempts WebRTC to the first user terminal using the information received through the WebSocket using the terminal 3 of the second user. If the WebRTC between the first user and the second user terminal is successful, the main server displays the classroom information (the class time, the amount of the requested coin, the class language) stored in the DB to the second user terminal. When the second user reads the corresponding information and sends a signal to the main server that the user agrees with the terminal, the first and second user terminals are assigned accounts of the Linux server for the respective classes, respectively.

제3 단계(S30)는 제1 사용자 단말 및 제2 사용자 단말에게 각각 리눅스 계정을 할당하는 단계이다.The third step S30 is a step of assigning Linux accounts to the first user terminal and the second user terminal, respectively.

제3 단계에서, 리눅스 서버(5)는 실제 사용자가 단말에 입력한 명령어를 실행하는 리눅스 서버이다. 중계 서버(4)는 사용자를 리눅스 서버의 비사용중인 계정에 연결하고, Linux Shell에 출력되는 결과물을 사용자의 단말(2,3)에 반환하는 서버이다. 리눅스 서버(5)는 SSH를 통해 중계 서버(4)와 데이터를 주고받는다. 중계 서버(4)는 WebSocket을 이용해 리눅스 서버(5)로부터 받은 데이터를 실시간으로 사용자의 단말(2,3)에 전달하고, 사용자의 단말에서 입력한 명령들을 리눅스 서버(5)에 전달한다.In the third step, the Linux server 5 is a Linux server that executes a command that an actual user inputs to the terminal. The relay server 4 is a server which connects the user to an unused account of the Linux server and returns the output result to the Linux Shell to the user terminal 2, 3. The Linux server 5 exchanges data with the relay server 4 via SSH. The relay server 4 transmits data received from the Linux server 5 to the user terminals 2 and 3 in real time using the WebSocket and transmits the commands input from the user terminal to the Linux server 5.

또한, 제1 사용자(강의자) 및 제2 사용자(수강자)가 강의실에서 연결이 성립된 후, 제2 사용자의 단말이 중계 서버(4)에 수업을 시작한다는 신호를 전달하면, 각 사용자의 단말에서 SSH를 이용하여 리눅스 서버에 접속하는 과정을 진행한다. 자세한 내용은 이하와 같다. 리눅스 서버(5)에 몇 십 개 정도의 리눅스 계정을 미리 생성한다. 중계 서버(4)는 강의실에 접속하는 제1 사용자(강의자) 및 제2 사용자(수강자)에게 현재 사용 중이지 않은 계정을 부여한다. 계정 부여 과정에서 계정의 사용여부는 중계 서버와 각 사용자 간의 WebSocket 연결이 성립되거나 끊길 때, 전역변수로 선언된 계정리스트를 통해 관리된다. 예를 들면, 하나의 제1 사용자, 제2 사용자 쌍이 강의실에 접속하면 계정 리스트에서 현재 사용할 수 있다고 표시된 계정 두 개를 선택한 뒤, 제1 사용자와 제2 사용자에게 각각 부여한다. 할당된 계정들은 다른 사용자들이 사용하지 못하도록 표시된다. 제1, 2사용자가 강의실 페이지에서 나가면 할당되었던 계정들은 다른 사용자들을 위해 다시 사용할 수 있다고 표시된다. 강의실 페이지를 나가면 각 사용자가 해당 계정에 생성한 파일들은 지워지게 된다.After the first user (lecturer) and the second user (lecturer) establish a connection in the lecture room, if the terminal of the second user transmits a signal to start the lecture to the relay server 4, The process of connecting to the Linux server is performed using SSH. The details are as follows. Create several dozens of Linux accounts in advance on the Linux server (5). The relay server 4 grants the first user (lecturer) and the second user (lecturer) accessing the lecture room an account that is not currently being used. During the account granting process, the use of the account is managed through a list of accounts declared as global variables when the connection between the relay server and each user is established or disconnected. For example, when one first user and a second user pair access the classroom, two accounts indicated to be currently available in the account list are selected and given to the first user and the second user, respectively. Allocated accounts are marked for use by other users. If the first or second user leaves the classroom page, the assigned accounts are marked as available for other users. When you leave the classroom page, the files that each user creates for that account will be deleted.

또한 중계 서버(4)가 관리하는 WebSocket과 Paramiko(python server에서 SSH Connection을 돕기 위한 API)를 이용하여, 리눅스 서버(5)와 사용자 단말(2,3) 간의 연결에 관련된 모든 작업들을 진행한다. 보다 구체적으로는, 제1 사용자와 제2 사용자 단말이 강의실에 들어와서 강의를 시작 했을 때, 중계 서버(4)와 제1, 2 사용자 간의 WebSocket 연결이 성립 된다. Paramiko를 이용하여 위에서 할당된 계정과 중계 서버(4)의 pem key(SSH Connection을 위한 private key)를 이용하여 중계 서버(4)는 SSH를 통해 해당 리눅스 서버의 계정에 연결을 시도한다. 연결이 성립되면, 사용자의 단말(2,3)에 연결이 되었다고 표시된다.In addition, all operations related to the connection between the Linux server 5 and the user terminals 2 and 3 are performed using the WebSocket managed by the relay server 4 and the Paramiko (API for assisting the SSH connection in the python server). More specifically, when the first user and the second user terminal enter the classroom and start lecturing, a WebSocket connection is established between the relay server 4 and the first and second users. The relay server 4 attempts to connect to the account of the corresponding Linux server through SSH using the account allocated above and the pem key of the relay server 4 (private key for SSH connection) using Paramiko. When the connection is established, it is indicated that the connection to the user's terminal (2, 3) is established.

제4 단계(S40)는 사용자의 단말(2,3)의 화면에서 컴파일 및 실행 버튼(400)이 클릭(눌러져)되어 이벤트를 주면, 중계 서버가 리눅스 서버(5)에 코드를 전송하고 컴파일 및 실행하는 단계이다.In the fourth step S40, when the compile and execute button 400 is clicked on the screen of the user's terminal 2 and 3 to give an event, the relay server transmits the code to the Linux server 5, .

제4 단계에서, 각 사용자 단말(2,3)이 리눅스 서버(5)에 연결이 되고 나면, 중계 서버(4)의 WebSocket의 message와 Paramiko를 이용하여, 사용자가 단말에 입력(300)한 리눅스 명령어를 중계 서버(4)에 전달한다. 중계 서버(4)는 전달 받은 명령어를 리눅스 서버(5)에 Paramiko Socket을 통해 보낸다. 중계 서버(4)는 Linux Shell에서 출력된 결과를 Paramiko Socket을 통해 받고 이것을 WebSocket을 통해 사용자의 단말(2,3)의 화면상의 리눅스 쉘 창(200)에 반환하거나 표시한다.In step 4, when each user terminal 2, 3 is connected to the Linux server 5, a message is sent to the Linux server 5 using the WebSocket message and Paramiko of the relay server 4, And transmits the command to the relay server 4. The relay server 4 sends the received command to the Linux server 5 via the Paramiko Socket. The relay server 4 receives the result output from the Linux Shell through the Paramiko Socket and returns or displays the result through the WebSocket to the Linux shell window 200 on the screen of the user's terminal (2, 3).

또한 사용자의 단말(2,3)의 화면에서 컴파일 및 실행 버튼(400)을 누르면, 소스 파일의 내용과 소스 파일의 이름을 중계 서버에 보낸다. 중계 서버(4)에서는 보내진 소스 파일의 내용과 소스 파일의 이름을 저장하는 명령어를 리눅스 서버(5)에 보낸다. 중계 서버의 부하를 줄이기 위해 사용자의 단말(2,3)에서 복수의 소스 파일 중 소스 파일 하나 당 일정 시간 간격으로 보낸다. 또한, 중계 서버(4)가 파일을 리눅스 서버(5)에 보낼 때도, 코드를 일정 크기로 나눈 후 일정 시간 간격으로 보낸다. 소스 파일들이 리눅스 서버(5)에 다 저장되고 나면, 중계 서버(4)에서 프로그래밍 교육을 하는 언어에 따른 컴파일 명령어 및 실행 명령어를 리눅스 서버(5)에 보낸다. 예를 들면, C언어의 경우에는 "gcc -o result *.c" 명령어를 보낸 후, 프로그램을 실행하는 "./result" 명령어를 보낸다.When the compile and execute button 400 is pressed on the screen of the user terminal 2 or 3, the contents of the source file and the name of the source file are sent to the relay server. The relay server 4 sends a command to the Linux server 5 to store the contents of the source file sent and the name of the source file. In order to reduce the load on the relay server, a plurality of source files are sent from the user terminal (2, 3) at a predetermined time interval per source file. Further, even when the relay server 4 sends the file to the Linux server 5, the relay server 4 divides the code into a predetermined size, and then sends the code at predetermined time intervals. When the source files are all stored in the Linux server 5, the relay server 4 sends the compile command and the execution command according to the language for programming training to the Linux server 5. For example, in the case of C language, send "gcc -o result * .c" command and then send "./result" command to execute the program.

제5 단계(S50)는 각 사용자에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 사용자의 단말(2,3)의 화면 중 리눅스 쉘(200) 부분에 전달하고 표시하는 단계이다.The fifth step S50 is a step of delivering the result output to the shell of the Linux server account allocated to each user to the part of the Linux shell 200 of the terminal 2, 3 of the user and displaying the result.

제5 단계에서, 중계 서버(4)에서 Paramiko Socket의 recv(데이터를 받아오는 명령)가 실행되면 (리눅스 서버에서 보낸 데이터가 저장되어 있는) Paramiko Socket buffer(버퍼)의 내용을 읽는다. recv(리눅스시스템호출함수, 데이터를 받아오는 명령) 함수는 buffer에서 한 번에 읽을 수 있는 데이터의 크기를 정할 수 있다. 또한, 이 함수가 실행되었을 때, buffer에 데이터가 없다면, 데이터를 받기 까지 기다릴 시간을 정해줄 수 있다. 예를 들어, recv 함수에 한 번에 읽어올 수 있는 데이터를 1200 bytes로 하고, 기다릴 시간을 1초로 한다고 가정하자. recv를 실행하였을 때, buffer에 데이터가 있다면 최대 1200bytes 만큼 읽는다. 만약 buffer에 데이터가 없다면 1초 동안 데이터가 오기를 기다린 후, 데이터가 오지 않으면 Exception을 발생시킨다. 데이터가 조 금이라도 1초 내로 온다면 그 데이터를 읽어서 반환한다.In the fifth step, the contents of the Paramiko socket buffer (buffer) in which the recvv (command to receive data) of the Paramiko Socket is executed in the relay server 4 (the data sent from the Linux server is stored) is read. The recv (Linux system call function, command to receive data) function can determine the size of the data that can be read at one time in the buffer. Also, when this function is executed, if there is no data in the buffer, you can set the time to wait for data to be received. For example, suppose the recv function has 1200 bytes of data that can be read at a time, and the wait time is 1 second. When recv is executed, if there is data in the buffer, it reads up to 1200 bytes. If there is no data in the buffer, wait for 1 second for data to be received, and if no data is received, an exception will be generated. If the data arrives within one second even if it is a constraint, the data is read and returned.

또한, Linux Shell에서 출력된 결과를 중계 서버에서 반복문(while)을 통해 recv를 호출하면 문제가 발생한다. 사용자가 작성한 프로그램이 끝나지 않고 지속적으로 데이터를 출력하는 프로그램일 경우, 도 5에서 보듯이 사용자가 화면상의 프로그램 실행 중지 명령(500) 버튼을 눌러 실행 중지 명령을 보내도 Paramiko 소켓이 recv를 계속 반복하기 때문에, 명령어가 리눅스 서버에 전달되지 않는다. 이 문제를 해결하기 위해, 중계 서버(4)에서 데이터를 받을 때, 리눅스 서버(5)에서 보내는 데이터양과 관련 없이 한 번만 받는다. 즉, 데이터의 양이 recv 함수가 실행되었을 때 최대로 읽어올 수 있는 데이터양보다 많아도 한 번만 호출한다. 중계 서버(4)에서 한 번 데이터를 받으면 이것을 WebSocket을 통해 사용자의 단말(2,3)에 전달한다. 만약 데이터가 null이 아니라면, 사용자 단말(2,3)은 중계 서버(4)에 데이터를 더 받아오라는 요청을 보낸다. 중계 서버(4)는 리눅스 서버(5)로부터 추가 데이터를 받아오게 된다. 데이터를 받아 오는 과정은 중계 서버가 받은 데이터가 null이 될 때까지 반복된다. In addition, problems arise when invoking recv through the while loop on the relay server output from Linux Shell. In the case where the user-created program does not end and the data is continuously output, as shown in FIG. 5, even if the user sends a stop command by pressing the program stop command (500) on the screen, the Paramiko socket repeatedly repeats the recv Therefore, the command is not delivered to the Linux server. To solve this problem, when receiving data from the relay server 4, it receives only once, regardless of the amount of data sent from the Linux server 5. That is, the amount of data is called only once more than the amount of data that can be read at maximum when the recv function is executed. Once the relay server 4 receives the data, it transfers it to the user's terminal (2, 3) via WebSocket. If the data is not null, the user terminal (2, 3) sends a request to the relay server (4) to receive further data. The relay server 4 receives additional data from the Linux server 5. The process of receiving data is repeated until the data received by the relay server becomes null.

또한, 위 과정으로 진행하면 기존의 프로그램 실행 중지 명령어를 즉각적으로 보낼 수 있다. 사용자 단말(2,3)이 WebSocket을 통해 중계 서버(4)에 인터럽트(Ctrl^C) 요청을 보낸다고 가정하자. 중계 서버(4)에서 현재 진행 중인 recv 실행이 한 번 끝나면, 사용자가 다시 WebSocket을 통해 중계서버(4)에 새로운 명령을 전달할 수 있기 때문에, 중계 서버(4)는 사용자 단말(2,3)이 실행 중지 버튼을 누름에 의해 보낸 실행 중지 요청을 받는다. 그 후, 중계 서버(4)는 그 명령을 리눅스 서버(5)에 전달하여 실행중인 프로그램을 종료한다.Also, if you go to the above process, you can immediately send the existing program execution stop command. Suppose that the user terminal (2, 3) sends an interrupt (Ctrl ^ C) request to the relay server (4) via WebSocket. Once the recv execution currently under way in the relay server 4 is completed, the relay server 4 can transmit the new command to the relay server 4 via the WebSocket again, And receives a stop request sent by pressing the stop button. Thereafter, the relay server 4 transfers the command to the Linux server 5 and terminates the program being executed.

제6 단계(S60)는 WebRTC를 이용한 실시간 소스 파일 동기화 단계이다. The sixth step S60 is a real-time source file synchronization step using the WebRTC.

제6 단계에서, WebRTC data channel을 이용하여 제1 사용자와 제2 사용자에게 실시간으로 공유되는 프로그래밍 환경을 제공한다. 도 5에서 보듯이, 우선 제1, 2 사용자 단말(2,3)에 소스 파일을 추가, 삭제할 수 있는 가상의 파일 시스템(소스 파일 디렉터리, 1100)을 구현한다. 이 파일 시스템(1100)에 있어서 제1, 2 사용자가 새 파일을 추가, 혹은 기존의 소스 파일을 삭제할 때 마다 변경된 디렉터리 정보를 WebRTC data channel을 통해 상대방 사용자(2,3)에게 전달한다. 그 후, 상대방 사용자(2,3)에서는 해당 정보를 이용하여 자신의 파일 시스템(1100)을 상대방 사용자와 동기화 한다. In a sixth step, a programming environment shared in real time is provided to the first user and the second user using the WebRTC data channel. As shown in FIG. 5, a virtual file system (source file directory, 1100) capable of adding and deleting a source file to the first and second user terminals 2 and 3 is implemented. In this file system 1100, each time the first or second user adds a new file or deletes an existing source file, the changed directory information is transmitted to the other user (2, 3) through the WebRTC data channel. Thereafter, the other users (2, 3) synchronize their file system (1100) with the other user using the information.

또한, 각 사용자 단말의 화면에 코드 편집 창(100)을 두어, 제1, 2 사용자가 코드를 추가/편집 할 때 마다 실시간으로 동기화 한다. 이 때, 제1, 2 사용자가 동시에 같은 소스 파일을 편집할 경우, 서로의 코드가 덮어씌워지는 문제가 발생한다. 이것을 방지하기 위해 코드를 편집할 수 있는지 여부를 저장하는 변수를 둔다. 상대방이 나와 같은 소스 파일을 편집하고 있는지 여부를 변수를 통해 확인한다. 상대방이 수정 중이라면, 자신은 일정 시간 동안 코드 편집 창(100)의 코드를 수정하지 못하도록 한다. 위 방식은 클라이언트 간에 정보를 매개할 서버가 필요한 기존의 방식에 반해, 두 클라이언트 간의 P2P 방식인 WebRTC를 이용한다. 따라서 사용자가 코드를 편집할 때 마다 발생하는 코드 데이터 전송에 있어 서버의 부하를 없앨 수 있다.In addition, a code editing window 100 is placed on the screen of each user terminal, and the first and second users synchronize in real time every time code is added / edited. At this time, when the first and second users edit the same source file at the same time, there is a problem that the codes are overwritten with each other. To prevent this, place a variable that stores whether the code can be edited. Check whether the other person is editing the same source file as me through the variable. If the other party is modifying, the user can not modify the code of the code editing window 100 for a certain period of time. This method uses WebRTC, which is a P2P method between two clients, in contrast to the conventional method in which a server is required for intermediating information between clients. Therefore, it is possible to eliminate the load of the server in transmitting the code data that occurs whenever the user edits the code.

제7 단계(S70)는 제1 사용자와 제2 사용자의 수업에 있어서 제2 사용자의 재화(코인)가 제1 사용자에게 일정 시간이 될 때마다 설정한 코인의 일부가 전달되는 단계이다.The seventh step S70 is a step in which a part of the coins set by the first user and the second user each time the goods (coin) of the second user becomes a predetermined time for the first user is delivered.

제7 단계에서, 본 발명의 플랫폼 시스템은 업체가 강의자를 관리하는 시스템이 아닌, 강의자가 자신의 수업의 가치를 정하고 수업을 진행하는 자유 시장을 지원하는 시스템이다. 따라서 그에 따른 신뢰도 문제가 있다. 따라서 실제로 진행한 수업 시간에 따라 재화를 지불하는 방식이 적합하다. 수강자의 단말(3)에서 수분에서 수 십분 단위, 가령, 5분마다 메인 서버에 요청(ajax)을 보낸다. 메인 서버(1)는 현재까지 수업 시간을 수 십분 단위, 가령, 30분 단위로 비교하여, 수강자가 30분에 대한 돈을 지불하지 않았는지 확인한다. 만약 돈이 지불되지 않았다면 자동으로 수강자의 재화가 강의자에게 자동으로 전달된다. 재화의 전달이 완료되면, 메인 서버(1)는 WebSocket을 이용하여 각 사용자 단말에게 결제가 되었음을 알려준다. 수업 시간은 강의자와 수강자가 실제로 연결되었을 때만 흘러가기 때문에 정확한 시간에 대한 값을 지불하는 것이다.In the seventh step, the platform system of the present invention is a system that supports a free market in which a lecturer sets the value of his / her class and conducts lessons, rather than a system in which a company manages a lecturer. Therefore, there is a reliability problem. Therefore, it is appropriate to pay the goods according to the actual class time. And sends a request (ajax) to the main server every several minutes, for example, every five minutes, from the terminal 3 of the participant. The main server 1 compares the class time so far with a unit of several tens of minutes, for example, every 30 minutes, and confirms whether the student has paid the money for 30 minutes. If the money is not paid, the learner's goods are automatically delivered to the lecturer automatically. When the delivery of the goods is completed, the main server 1 informs each user terminal of the settlement using WebSocket. The class time is paid only for the correct time because the lecturer and the learner flow only when they are actually connected.

또한, 강의자가 제1 사용자 단말(2)의 화면에서 수업 끝내기 버튼(600)을 눌러 수업 끝내기 신호를 메인 서버(1)에 전달하면, 메인 서버(1)는 강의자가 설정한 강의 시간에 대한 재화에서, 수강자가 현재까지 지불했던 돈을 뺀 나머지에 대한 지불하기를 수강자인 제2 사용자 단말(3)에게 요청한다. 제2 사용자 단말이 지불하기 요청에 응답하면 지불해야 하는 돈이 제1 사용자 단말에게 전달되며 수업이 종료되고 방에서 설정한 내용(수업시간, 수업에 대한 가격 등)이 초기화된다. When the lecturer presses the class end button 600 on the screen of the first user terminal 2 and transmits a class end signal to the main server 1, the main server 1 notifies the lecturer To the second user terminal 3, which is a student, to pay for the remainder after deducting the money paid by the student. When the second user terminal responds to the payment request, money to be paid is delivered to the first user terminal, and the contents of the room (class time, price for the class, etc.) set in the room are initialized.

제8 단계(S80)는 비정상적인 종료(새로 고침, 뒤로 가기, 브라우저 종료 등)로 인해 수업 연결이 종료되었을 때, 연결을 복구하는 단계이다.The eighth step S80 is a step of restoring the connection when the class connection is terminated due to abnormal termination (refresh, backward, browser termination, etc.).

제8 단계에서, 강의실에서 WebRTC이 이루어진 후, 한 사용자 단말이 페이지에서 나가면 다시 동일한 URL로 접속을 해도 연결이 되지 않는다. WebRTC이 되는 과정 자체가 제1 사용자(initiator) 단말이 제안(offer)을 기다리는 상태로 세팅을 한 후, 제2 사용자 단말이 동일한 URL의 페이지에 접속하여 offer를 보냄으로써 연결이 이루어진다. 이 과정은 웹에서 버튼 클릭 같은 이벤트로 이루어지는 게 아니라, js(javascript)가 처음 로드 될 때 진행하는 과정이기 때문에 제1 사용자(initiator)가 새로운 페이지를 열지 않으면 연결이 진행되지 않는다.In the eighth step, after the WebRTC is performed in the classroom, if a user terminal leaves the page, the connection is not established even if the same URL is accessed again. The process of becoming a WebRTC itself is established by setting a state in which the first user terminal waits for an offer, and then a connection is established by the second user terminal connecting to the page of the same URL and sending an offer. This process is not performed on the Web, such as a button click event, but is performed when js (javascript) is loaded for the first time. Therefore, if the initiator does not open a new page, the connection does not proceed.

또한, 한 사용자 단말이 뒤로 가기나 새로 고침(Page Refresh) 혹은 브라우저 종료를 통한 비정상적인 종료를 할 경우, 메인 서버(1)에서 WebSocket을 통해서 종료(close) 이벤트를 감지하고 연결되어 있던 다른 사용자에게 강의실을 나가도록 명령을 전달한다. 명령 신호를 전달받은 사용자는 강의실에서 나가진다. 결국, 두 사용자는 강의실에서 모두 나가있는 상태가 되고 새로운 강의실을 통해 연결을 다시 진행하게 된다. 이 때, 강의실에서 진행했던 내용(진행된 수업 시간, 수업의 가격, 제2 사용자가 제1 사용자에게 지불한 코인의 값, 저장한 소스 파일 내용 등)은 연결이 끊어질 때 메인 서버(1)의 DB에 저장된다. 연결이 끊어졌을 때는 수업 시간이 흘러가지 않는다. 다시 강의실 페이지에서 연결이 되면, 연결이 끊기기 전까지 진행되었던 수업 내용이 제1, 2 사용자에게 보이고 다시 수업이 시작되게 된다. 즉, 수업에 관한 내용들이 지워지지 않고 그대로 이어진다.In addition, when a user terminal performs an abnormal termination through backward, page refresh, or browser termination, the main server 1 detects a close event through WebSocket and informs the connected user Quot; < / RTI > The user who receives the command signal exits the classroom. Eventually, both users will be out of the classroom, and the connection will resume through the new classroom. At this time, contents (progressed class time, price of class, value of coin paid by the second user to the first user, contents of the stored file of the stored contents, etc.) progressed in the classroom are transmitted to the main server 1 It is stored in DB. When the connection is broken, the class time does not flow. When the connection is made again on the lecture room page, the lecture contents which were performed until the connection is disconnected are shown to the first and second users, and the lecture is started again. In other words, the contents of the lesson are not erased but are continued.

한편, 본 발명의 실시예에 따른 멀티미디어 콘텐츠 제공 시스템의 제어방법은 다양한 전자적으로 정보를 처리하는 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 저장 매체에 기록될 수 있다. 저장 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. Meanwhile, the control method of the system for providing multimedia contents according to the embodiment of the present invention may be implemented in the form of a program command which can be executed through a variety of means for processing information electronically and recorded in a storage medium. The storage medium may include program instructions, data files, data structures, and the like, alone or in combination.

저장 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 저장 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광 기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 전자적으로 정보를 처리하는 장치, 예를 들어, 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. Program instructions to be recorded on the storage medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of software. Examples of storage media include magnetic media such as hard disks, floppy disks and magnetic tape, optical media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, magneto-optical media and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as devices for processing information electronically using an interpreter or the like, for example, a high-level language code that can be executed by a computer.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the invention as defined in the appended claims. It will be understood that the invention may be varied and varied without departing from the scope of the invention.

Claims (15)

멀티미디어 콘텐츠 제공 시스템에 있어서,
멀티미디어 콘텐츠 제공 시스템에 있어서,
WebSocket을 통해 제1 사용자 단말과 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 제1 사용자 단말과 제2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당하는 메인 서버;
WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 제1 사용자 단말 및/또는 제2 사용자 단말에 전달하고, 제1 사용자 단말 또는 제2 사용자 단말에서 입력한 명령어 또는 코드들을 리눅스 서버에 전달하는 중계서버; 및
중계서버로부터 수신한 제1 사용자 단말과 제2 사용자 단말에서 입력한 명령어를 실행하는 리눅스 서버;를 포함하고,
상기 리눅스 서버는 리눅스 서버와 중계 서버 사이에서의 데이터를 주고받는 SSH 통신부와, 상기 SSH 통신부를 통해 전달받은 데이터 중 코드를 저장 및 컴파일하는 메모리를 포함하고,
상기 제1 사용자 단말과 제2 사용자 단말 별로 메모리의 할당량의 제한이 걸려있으며, 상기 제1 사용자 단말과 제2 사용자 단말이 강의실 페이지에서 퇴장하면 저장된 코드를 삭제하게 되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템.
A system for providing multimedia contents,
A system for providing multimedia contents,
A main server for delivering information necessary for the WebRTC to the first user terminal and the second user terminal via WebSocket and allocating an account of a Linux server for teaching to the first user terminal and the second user terminal, respectively;
A relay server for transmitting data received from the Linux server using the WebSocket to the first user terminal and / or the second user terminal in real time, and for transmitting commands or codes input from the first user terminal or the second user terminal to the Linux server; And
And a Linux server for executing a command input from the first user terminal and the second user terminal received from the relay server,
The Linux server includes an SSH communication unit for exchanging data between a Linux server and a relay server, and a memory for storing and compiling code among data received through the SSH communication unit,
Wherein when the first user terminal and the second user terminal exit from the classroom page, the stored code is deleted. The system of claim 1, .
제1항에 있어서,
상기 메인 서버는 제1 사용자 단말이 강의실 페이지에 입장할 때 설정하는 정보인 강의시간, 강의하고자 하는 언어, 및 원하는 키(전자화폐) 중 어느 하나 이상을 저장하며, 강의실에서 나갈 때는 정상적인 종료인지, 비정상적인 이벤트에 의한 종료인지 판단하고, 정상적인 종료일 경우 해당 강의실에 설정한 정보를 초기화하고, 비정상적인 이벤트에 의한 종료인 경우 현재까지의 수업 시간을 저장하는 DB 제어부를 포함하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템.
The method according to claim 1,
The main server stores at least one of a lecture time, a language to be lectured, and a desired key (electronic money), which is information to be set when the first user terminal enters the lecture room page, And a DB controller for determining whether the event is an end due to an abnormal event, initializing information set in the classroom if the event is a normal end, and storing the current class time in case of an end due to an abnormal event .
제2항에 있어서,
상기 메인 서버는 제1 사용자 단말과 제2 사용자 단말 간의 WebRTC 연결을 위한 정보를 공유하고, 강의종료 또는 30분마다 코인 지급하기를 포함하는 이벤트 정보를 제1 사용자 단말 또는 제2 사용자 단말에게 전달하는 WebSocket 통신부; 및 제1 사용자 단말 또는 제2 사용자 단말이 강의실에 접속할 때, 강의실 html 랜더링과 기존에 임시 저장한 코드 불러오기를 수행하고, 강의실 외의 요구에 대한 http 응답을 수행하는 http 통신부를 더 포함하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템.
3. The method of claim 2,
The main server shares information for WebRTC connection between the first user terminal and the second user terminal, and transmits event information including the end of the lecture or coin payment every 30 minutes to the first user terminal or the second user terminal WebSocket communication unit; And an http communication unit performing the html rendering of the lecture room and the previously stored code loading when the first user terminal or the second user terminal is connected to the lecture room and performing an http response to the request out of the lecture room A multimedia content providing system.
제1항에 있어서,
상기 중계서버는 리눅스 서버와의 통신을 위한 Paramiko SSH 통신부와,
제1,2 사용자 단말들과의 강의실 이벤트에 대한 통신을 위한 WebSocket 통신부와,
리눅스 서버의 각 계정이 할당되어있는지 여부를 저장하고 있는 목록을 저장하며, 제1,2 사용자 단말에게 빈 계정 할당 및 리눅스 서버 계정 리스트 갱신을 수행하는 메모리를 더 포함하고,
상기 WebSocket 통신부는 제1,2 사용자 단말로부터의 리눅스 서버의 계정 할당 요청이나, 컴파일 또는 실행을 포함하는 명령 요청을 수신하고, 리눅스 서버로부터 온 결과를 사용자 단말들에 반환하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템.
The method according to claim 1,
The relay server includes a Paramiko SSH communication unit for communication with a Linux server,
A WebSocket communication unit for communicating a classroom event with the first and second user terminals,
Further comprising a memory for storing a list storing whether each account of the Linux server is allocated and allocating an empty account to the first and second user terminals and updating the Linux server account list,
Wherein the WebSocket communication unit receives a command request including an account assignment request, compile or execution of a Linux server from the first and second user terminals, and returns the result from the Linux server to the user terminals. Delivery system.
삭제delete 제 1항에 있어서,
상기 제1 사용자 단말의 화면에서 화면공유 버튼을 클릭하면, 화면 공유 창이 제2 사용자 단말의 화면에 생성되고, 제1 사용자 단말이 제2 사용자 단말과 공유하는 자료가 영상으로 제2 사용자 화면에 표시되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템.
The method according to claim 1,
When a screen sharing button is clicked on the screen of the first user terminal, a screen sharing window is created on the screen of the second user terminal, and data shared by the first user terminal with the second user terminal is displayed on the second user screen The multimedia content providing system comprising:
멀티미디어 콘텐츠 제공 시스템의 제어방법에 있어서,
메인 서버가 WebSocket을 통해 제1 사용자 단말과 제2 사용자 단말 각각에게 서로간의 WebRTC에 필요한 정보를 전달하고, 제1 사용자 단말과 제2 사용자 단말에게 각각 수업을 위한 리눅스 서버의 계정을 할당하는 설정단계;
중계서버가 WebSocket을 이용해 리눅스 서버로부터 받은 데이터를 실시간으로 제1 사용자 단말 및/또는 제2 사용자 단말에 전달하고, 제1 사용자 단말 또는 제2 사용자 단말에서 입력한 명령어 또는 코드들을 리눅스 서버에 전달하는 중계단계; 및
리눅스 서버가 중계서버로부터 수신한 제1 사용자 단말과 제2 사용자 단말에서 입력한 명령어를 실행하는 실행단계; 를 포함하고,
상기 리눅스 서버는 중계 서버와 데이터를 주고받으며, 중계서버로부터 전달받은 데이터 중 코드를 저장 및 컴파일하고, 제1 사용자 단말과 제2 사용자 단말 별로 메모리의 할당량의 제한이 걸려있으며, 상기 제1 사용자 단말과 제2 사용자 단말이 강의실 페이지에서 퇴장하면 저장된 코드를 삭제하게 되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
A method of controlling a multimedia content providing system,
A main server transmits information necessary for WebRTC to each of the first user terminal and the second user terminal via WebSocket, and assigns an account of a Linux server for classroom to the first user terminal and the second user terminal respectively ;
The relay server transfers data received from the Linux server using the WebSocket to the first user terminal and / or the second user terminal in real time, and transmits the command or codes inputted from the first user terminal or the second user terminal to the Linux server A relaying step; And
An execution step of executing a command input from a first user terminal and a second user terminal received from a relay server by a Linux server; Lt; / RTI >
The Linux server transmits and receives data to and from the relay server, stores and compiles a code among the data transmitted from the relay server, restricts a memory allocation amount for each of the first user terminal and the second user terminal, And when the second user terminal leaves the classroom page, deletes the stored code.
제7항에 있어서,
제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 표시단계;를 더 포함하여 구성되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
8. The method of claim 7,
And outputting a shell output result of the Linux server account assigned to the first user terminal and the second user terminal to the first user terminal and the second user terminal and displaying the shell output result. The method comprising:
멀티미디어 콘텐츠 제공 시스템의 제어방법에 있어서,
강의 시간 또는 코인 정보를 포함하는 수업 정보를 데이터베이스에서 불러오고, 제1 사용자 단말 및 제2 사용자 단말 간의 WebRTC 커넥션을 맺어주는 사용자 단말 간 연결단계;
제1 사용자 단말 및 제2 사용자 단말에게 각각 리눅스 계정을 할당하는 리눅스 계정 할당단계;
제1 사용자 단말 또는 제2 사용자 단말로부터 컴파일 및 실행을 위한 명령어 및 코드를 중계서버를 통해 리눅스 서버에 전송하고, 리눅스 서버에서 코드를 컴파일 및 실행하는 컴파일 및 실행단계; 및
WebRTC를 이용하여 강의실 페이지 내에서 제1 사용자와 제2 사용자가 편집하는 소스 파일들을 동기화시키는 소스 파일 동기화단계;를 포함하여 구성되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
A method of controlling a multimedia content providing system,
Connecting the user terminals connecting the first user terminal and the second user terminal to each other to bring up the class information including the lecture time or coin information from the database and establish the WebRTC connection between the first user terminal and the second user terminal;
A Linux account assignment step of assigning a Linux account to each of the first user terminal and the second user terminal;
A compiling and executing step of transmitting a command and code for compiling and execution from the first user terminal or the second user terminal to the Linux server via the relay server and compiling and executing the code in the Linux server; And
And synchronizing the source files edited by the first user and the second user in the classroom page using the WebRTC.
제9항에 있어서,
제1 사용자 단말과 제2 사용자 단말이 메인 서버와 연결하고, 제1 사용자 단말이 제2 사용자 단말 만을 위한 강의실 페이지를 개설하는 강의실 개설단계;를 더 포함하여 구성되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
10. The method of claim 9,
Further comprising a step of opening a lecture room where a first user terminal and a second user terminal are connected to a main server and a first user terminal establishes a lecture room page only for a second user terminal, / RTI >
제9항에 있어서,
제1 사용자 단말 및 제2 사용자 단말에게 할당된 리눅스 서버 계정의 쉘에 출력된 결과를 제1 사용자 단말과 제2 사용자 단말에 전달하여 표시하는 쉘 출력 결과 전달단계;를 더 포함하여 구성되는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
10. The method of claim 9,
And a shell output result transfer step of transferring and displaying a result output to the shell of the Linux server account allocated to the first user terminal and the second user terminal to the first user terminal and the second user terminal, The method comprising:
제9항에 있어서,
상기 소스 파일 동기화단계는 소스 파일을 추가, 제거, 이름 변경을 할 때 실시간으로 사용자 단말 간에 동기화하는 과정; 또는 소스 파일의 내용을 편집할 때 실시간으로 사용자 단말 간에 동기화하는 과정;을 포함하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
10. The method of claim 9,
Wherein the step of synchronizing the source files includes the steps of synchronizing the source files in real time between user terminals when adding, removing, or renaming the source files; And synchronizing the content of the source file with the user terminal in real time when editing the contents of the source file.
제9항에 있어서,
제1 사용자와 제2 사용자의 수업에 있어서 제2 사용자의 재화(코인)가 제1 사용자에게 일정 시간이 될 때마다 설정한 코인의 일부가 전달되는 결제단계를 더 포함하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
10. The method of claim 9,
Further comprising a settlement step of delivering a part of coins set by the first user and the second user each time a second user's coin reaches a first user for a predetermined time, A method of controlling a providing system.
제9항에 있어서,
새로 고침, 뒤로 가기, 브라우저 종료 중 어느 하나에 의해 비정상적인 종료가 되어 수업 연결이 종료되었을 때, 연결을 복구하는 연결 복구단계를 더 포함하는 것을 특징으로 하는 멀티미디어 콘텐츠 제공 시스템의 제어방법.
10. The method of claim 9,
Further comprising a connection restoring step of restoring the connection when an abnormal termination occurs due to any one of refreshing, backing up, and browser termination and ending the class connection.
제 7 항 내지 제 14 항 중 어느 한 항의 방법을 실행하는 프로그램을 기록한 것을 특징으로 하는 컴퓨터로 판독 가능한 기록매체.

A computer-readable recording medium storing a program for executing the method of any one of claims 7 to 14.

KR1020160041401A 2016-04-05 2016-04-05 System for providing multimedia contents, and Control Method Thereafter KR101711203B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160041401A KR101711203B1 (en) 2016-04-05 2016-04-05 System for providing multimedia contents, and Control Method Thereafter

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160041401A KR101711203B1 (en) 2016-04-05 2016-04-05 System for providing multimedia contents, and Control Method Thereafter

Publications (1)

Publication Number Publication Date
KR101711203B1 true KR101711203B1 (en) 2017-03-02

Family

ID=58427025

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160041401A KR101711203B1 (en) 2016-04-05 2016-04-05 System for providing multimedia contents, and Control Method Thereafter

Country Status (1)

Country Link
KR (1) KR101711203B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102356571B1 (en) * 2021-08-02 2022-02-09 주식회사 핑고엔터테인먼트 File synchronization method and system for multi-party

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030026379A (en) * 2001-09-06 2003-04-03 김양우 Virtual education system and method for compiling programming language under internet environment
JP2006227218A (en) * 2005-02-16 2006-08-31 Tokyo Denki Univ System and program for supporting programming education
JP2010231580A (en) * 2009-03-27 2010-10-14 Kyoto Sangyo Univ System and method for supporting education
KR20140011592A (en) 2012-07-17 2014-01-29 농협은행(주) Supported apparatus for managing lecture program and method thereof
KR20150104661A (en) 2014-03-05 2015-09-16 김기훈 Open market typed online service method for intermediation education contents
KR20150139395A (en) * 2014-06-03 2015-12-11 한진승 Method and server for providing online video-education service

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030026379A (en) * 2001-09-06 2003-04-03 김양우 Virtual education system and method for compiling programming language under internet environment
JP2006227218A (en) * 2005-02-16 2006-08-31 Tokyo Denki Univ System and program for supporting programming education
JP2010231580A (en) * 2009-03-27 2010-10-14 Kyoto Sangyo Univ System and method for supporting education
KR20140011592A (en) 2012-07-17 2014-01-29 농협은행(주) Supported apparatus for managing lecture program and method thereof
KR20150104661A (en) 2014-03-05 2015-09-16 김기훈 Open market typed online service method for intermediation education contents
KR20150139395A (en) * 2014-06-03 2015-12-11 한진승 Method and server for providing online video-education service

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102356571B1 (en) * 2021-08-02 2022-02-09 주식회사 핑고엔터테인먼트 File synchronization method and system for multi-party

Similar Documents

Publication Publication Date Title
US6928464B2 (en) Systems and methods for unified remote control access
CN103282922B (en) The method and system of offering help to the terminal use of software application
US11314474B1 (en) Collaborative remote interactive platform
TW200813750A (en) System for and method of providing a user interface for a computer-based software application
CA3148798C (en) Virtual visit objects
US20110276634A1 (en) Network system, communication terminal, communication method, and communication program
KR101773752B1 (en) Web based Platform System for providing programming video education, and Control Method Thereafter
US11349889B1 (en) Collaborative remote interactive platform
KR101711203B1 (en) System for providing multimedia contents, and Control Method Thereafter
US20100037320A1 (en) System and Method for On-Line Exchange and Trade of Information
CN108170414A (en) A kind of establishment can voice, collaboration and the artificial intelligence of analysis accounting system method
KR20230150892A (en) Non-face-to-face remote business processing system and method with user interface sharing
CN112817493B (en) Content sharing method and device, computer equipment and storage medium
JP2002117153A (en) Remote lecture system
JP6600896B1 (en) Information transfer information processing apparatus, method using the information transfer information processing apparatus, program, and information transfer system
Balyan et al. Distributed collaboration based on mobile infrastructure
CN114023465A (en) Session processing method, device, equipment and computer readable storage medium
JP3851319B2 (en) Image data transmission generation system
JP7347550B2 (en) Information processing system, information processing device, program and method
WO2023153137A1 (en) Information processing device, information processing method, recording medium, and server device
KR20170027327A (en) Method for Exchanging Data Except for Communication Load
KR20020021516A (en) Realtime remote joint lecture system
JP6439171B2 (en) Image display system, image display system control method, server, server control method, and program
CN117666997A (en) Method, device, equipment and medium for supporting multi-terminal multi-screen interactive communication
CN112286794A (en) Method and device for testing online recruitment system and storage medium

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant