03-10-2016, 02:57 PM
1457513591-ProgateARemoteDesktopSharingSystemtosupportMultipartyConference.doc (Size: 467 KB / Downloads: 8)
Abstract - PRO-GATE is a simple, fast and secure application for PC remote control which can support multiparty conference to share desktop for online presentations or collaboration. The basic purpose of PRO-GATE is to provide an application which will help the users in accessing and controlling any desktop from anywhere in the world. The idea is to create a virtual space for interaction of more than two users, i.e. a conference supportive system and not only peer-to-peer system. This allows creating, modifying and sharing documents and information jointly. Most of the available systems have bad scalability and slow down with increase in number of users, PRO-GATE uses existing technologies and advanced functions to provide a better real-time collaboration system. The user access in PRO-GATE is kept as simple as possible with minimal human intervention while setting up. This is an open source tool, and thus could be customized according to individual preferences. The application can be used in industries, organizations and educational institutes for collaborative studies, project demonstrations and distance learning. It can be used to maintain cyber security by monitoring any suspicious activities on desktop.
I. INTRODUCTION
PC remote control means ability to access and control a shared desktop from anywhere in the world. The user can log-in via a web application and directly view his/her desktop without tedious procedure. Collaboration means working together, a computer supported collaboration system would help to provide a remote support to create a notion of virtual space where online presentations and meetings could be held. And multiparty conference would support not only peer-to-peer interaction, but an ability to get more than two users to be able to collaborate and work together. Here multiple clients could use this real-time collaboration system to join a meeting hosted by a user, such that each one of them would be able to view and control the desktop of the host. These characteristics make it very useful in professional, educational and personal context – they enable exchange of information and documents, to create, share and modify projects and ideas jointly. The ability of this tool to be installed in a private network gives maximum security while sharing a desktop. Also it has functions to send chat messages, transfer files and folders, helping in exchange of information amongst individuals.
There are already many Desktop Sharing Softwares available in markets which work on computer-supported real-time collaboration systems [6], but with certain limitations.
1) Many systems are slow, i.e. have bad scalability as their performances decreases with the increase in number of users.
2) Do not have a good Graphical user Interface, which could be easily used and understood by the users.
3) Many of them are required to be installed at the user site and thus involve a tedious procedure while setting up for use.
4) They charge for their commercial use, which makes it difficult for the start-up companies to provide remote support for the clients.
In this paper, we propose an ALL IN ONE solution which overcomes above limitations. This is achieved by using existing technologies – VNC – Virtual Network Computing, which is having Remote Frame Buffer Protocol, RFB as its underlying technology [1][5]. VNC is a platform-independent system, which supports graphical desktop sharing. Optimization of VNC is done to support real time collaboration. Ruby on Rails – Rails is a web application development framework written in the Ruby language used to develop the Graphical User Interface. The GUI is such that it makes user access in PRO-GATE very simple with minimal human intervention while setting up. This is an open source tool so organizations can customize it according to their own needs.
This paper is organized as: Section 2 specifies literature survey of the topic, Section 3 defines the Progate Design, Section 4 defines the algorithm and handling of clients and Section 5 depicts the conclusion and future work.
II. RELATED WORK
During detailed study of the existing technologies it was found that the following technologies would be required to develop the application.
A. VNC
VNC – Virtual Network Computing – is remote control software, which allows interacting with one computer using a simple program on another computer [1]. It is a protocol for accessing graphical user interfaces. It works at the framebuffer level, which makes it platform-independent, and thus it is potentially applicable to all operating systems. It thus allows a user to control a remote machine, i.e. server on a local machine, i.e. client. The basic operations:
1) VNC Server
It is a program which runs on a machine that shares its screen. It allows to view a desktop not only on the machine on which it runs, but from anywhere on the Internet, The server sends framebuffer as small rectangles to the client and passively allows the client to take control of it [1].
2) VNC Client
It is a program installed on the client’s machine and connects to the server component [1]. Also known as VNC viewer, it watches, controls, and interacts with the remote machine, i.e. server by sending to it the inputs and accepting the outputs
3) RFB Protocol
A Communication Protocol on which VNC is based. It is used to remotely access the graphical user interfaces. This protocol all server to update framebuffer which is displayed on viewer’s side. The events – keyboard press and mouse movements – messages from client are sent to server. Desktop is represented as small rectangles of pixel data at the specified x, y position and transmission is done by relaying the updated graphical screen portions in the other direction, over a network [1]. The RFB relies on sending encoded pixels to the client that contains the information of the Desktop of Server. The client then decodes the pixels and draws them on a graphical application running on its machine. Events occurring at the client side like keyboard press and mouse pointer movements are trapped and sent to the Server. Server then reflects back these changes. For this purpose the RFB protocol suggests the use of a Frame Buffer. The Frame Buffer actually contains the desktop information which is updated when the client generates any kind of event. This updated buffer must be sent to the Server which updates its own desktop accordingly. Similarly when the Server generates events that affect the desktop, the updated buffer is redrawn at the Client. This exchange of framebuffers provides synchronized desktop sharing. The basic emphasis is that there should be very few requirements at the client’s side. As RFB works at the level of framebuffer, it is independent of the platform, i.e. it is applicable to all windowing systems. So, clients can run on widest range of hardware, this makes implementation of client as simple as possible.
B. Sockets
Sockets are used for inter-process communication. They are a way to speak to the other programs using standard UNIX file descriptors. Socket API is especially provided by the operating system allowing application programs to control and use network sockets [2][3]. File descriptor for network communication is got through a call to the socket () system routine, which returns the socket descriptor. Communication is done through it using the specialized send () and recv () socket calls. The file descriptor returned by socket () is sockfd, listen () is used to wait for the incoming connections, accept () returns a new socket file descriptor for each connection established. Socket-to-socket virtual connection is known as session and send () and recv () are used for communicating over datagram sockets or stream sockets, refer Figure 1.
Sockets deliver the incoming data packets to specific process or thread of an application. Server is the computer application that provides application services. It creates sockets on start up in listening mode [2] [7]. Once listener is run, all it does is to sit there and listen whether a packet arrives or not. Similarly many functions are there which are said to block, i.e. if there is no data, they sleep there until some data arrives. Such functions are accept (), recv (), even when the first socket descriptor is created using socket (), the kernel sets it to block. But to put a program on busy wait looking for data is not a good practice as it’ll suck up CPU time and thus reduces the overall efficiency.
C. Advanced Techniques
To solve the above problem select () function can be used to perform synchronous handling of input and output at multiple sockets.
Select (): This function is used as synchronous I/O multiplexing and thus can monitor multiple sockets, Figure 2, at the same time. It will tell which sockets are ready to read, which are ready to write and which ones have got an exception. And rather than always being in busy-wait condition while blocking to perform read and write operations, a time structure could be used to specify a timeout period. Thus select () function is used to determine the status of the sockets, that it handles [3] [7]. It has to monitor sets of file descriptors, FD_SET in a synchronous manner.
D. Ruby on rails
Web development technology, wherein Rails is a web application development framework written in the Ruby language – a fully featured object-oriented language. In rails changes made are reflected immediately in run-time environment that makes it easier for developers to use [4]. Ruby on the other hand is also easily testable. Integration of Ruby with Rails is simply, clean and seamless due to dynamic nature of Ruby. So, ruby on rails provide a consistent approach to support development of web services.
III. PROGATE DESIGN
The requirements to design a real-time collaboration system to support interaction of more than two users were identified and above mentioned technologies were kept in mind while developing Progate.The design is focussed to provide an easy to access collaboration system that supports multiple users and not only peer-to-peer.
A. GUI
The Graphical user interface has been developed using Ruby on Rails, which provides a consistent way to develop a web application [4].The user access in Progate is kept as simple as possible with minimal human intervention while setting up. As it provides one click access to the remote desktop this increases the ease of use of the product. This is facilitated by automatic downloading of the exe at the client’s side. It is an open source tool, free to use and could be customized according to individual preferences.
B. Working
Desktop sharing [8] such that one could access it from a distant place is kept simple. As soon as user registers using our web page an executable file is downloaded at user’s machine and irrespective of whether it is host machine or guest machine. This executable file is downloaded at user’s machine without any prompt to the user and since the size of file is too less, that is 52 kb, it is downloaded quickly. This downloaded file is stored in a temporary file (for example %temp% folder in windows) and hence it is executed. Now, the problem which may arise here is that the browser doesn’t have the rights to execute the executable file, but the java applet could execute it. As the browser can run the java applet. So now we were able to download and execute the executable file at user’s end without even bringing it in notice of user. Now, once this executable file is downloaded and executed it will start communicating with our Progate Server. And now the Server will just act as a bridge between the host client and the guest client and the executable file will run at both the clients.
C. Role of Server
The server acts as a reflector, Figure 3, present in the public domain and maintains Control Connection table and Data connection Table. Control Connections are made first at the time of user log-in and registration in the Progate. Once the entries in control tables have been made, the user is free to either host a new session or to join an existing session by providing the id of the host to which it wishes to connect to. Data Connections are made in addition to handle the data transfer between the stream sockets for a particular session. The session ends as the client logs out or the meeting is no longer continued by the host.
Here in the socket programming the server has to listen for incoming connections as well as keep reading and writing from and to the connections it already has. For this accept () and recv()s could be used as blocking functions but this sucks up CPU time and efficiency. As there are multiple users which are requesting server for connection and data transfer requests, so multiple threads are required to handle these connections. To share resources amongst multiple threads a function is required to assure thread safety, so that these threads can work simultaneously within the same process. So as discussed above an advanced function – select () – is thus used for synchronous I/O multiplexing to handle multiple sockets created by connection handling threads. The select () API [2] [3] creates a common point where multiple threads are put on to wait. This function monitors “sets” of file descriptors; in particular readfds, writefds, and exceptfds, thus multithreading can be handled efficiently.
IV. METHODOLOGY
For the tool to be developed, a very simple methodology is used in which the server will be running in listening mode [8]. As soon as the client logins, an executable will run on the client side which will contain the VNC server and the VNC client, these are responsible for desktop sharing as well as desktop accessing. This executable is responsible for connecting to the server and doing further work. The shared desktop and the sharing desktop are connected to the server via a control connection. This will create an entry in the control connection table which is present at the server location. Some of the columns in data connection table will be filled when the sharing desktop is connected and the entry will be full if the accessing desktop completes all the credentials and asks for the permission to access the desktop.
The Client interacts with the Server through the following functions: Get Support Connection Setup method is called when a client asks to connect to Server and makes a Control Connection, Figure 4.1. Give Support Connection Setup provides Control Connection to the client, Figure 4.2.To request for data transmission Remote Support Request is done, Figure 4.3. Accept Support Acknowledgement, accepts the data connection request and a Data Connection gets established, Figure 4.4. After Data Connection establishment Data Exchange, Figure 4.5, occurs synchronously among the clients joined during a session. This way the server interacts with the clients who are connecting to it, and the data connections and data transfer are facilitated by the connection handler method which manages the file descriptors.
This interaction between the Server and Client stops once a client either logs out or the host dissolves the session, causing the data connections with its clients to get cleaned up. This could be done using Get Logout Request and Give Logout Request methods.
V. CONCLUSION
The existing technologies and additional advanced functions along with a user friendly GUI could create a much faster and simpler remote desktop sharing system to support multiparty conference where in addition to peer-to-peer, more than two users can interact. The project is free and open source, the source code and documentation would be available at the project web site.
The multiple clients are handled by providing a time slice to the sockets requesting for data transmission and thus the multiple threads governing the sockets are handled accordingly. The increase in number of users, i.e. the scalability can be taken care of by extending VNC to support multicast data transmission. Whether you want quick access to your home computer from anywhere in the world, remote desktop applications can make your life easier. With the right remote desktop tool, you can access your home computer as though you're sitting right in front of it— no matter where you are, no matter what you're doing.