Desktop Sharing Using VNC

Chun-Bin Kuo
Columbia University
New York, NY 10027
USA
ck371@columbia.edu

Project Description

To extend the base Tcl/Tk sip client SIPC with the capability of desktop sharing which is based on VNC, a remote display system.

Basically, my project contains two parts. One is to extend the basic SIP client with the capability to determine and launch vncserver (WinVNC), or vncserver correctly. The second part is to modify some codes in VNC in order to hide the password checking process from users.

Most of the embedded programs SIPC used for audio, video, chat are not client-server programs. The request sender and request receiver of SIPC could run the same program and share audio, video or other resources. However, VNC is not such a program. It is client/server based. There must be a server program (vncserver or WinVNC) running, one or more clients (vncviewer) running and then client(s) can share the same desktop with server. Thus, I have to change SIPC a little bit and add additional information to achieve it.

This is the modified NEW CALL user interface (VNC selection added). The original interface is implemented by Xiaotao Wu.

screen dump

This is the flow chart of SIPC invite and response functions. The blue parts are modified by me.

flow

The second part of this project is to modify some codes in VNC in order to hide the password checking process from users. A good user interface should make most execution procedures invisible to users. Once users want to launch VNC, chat room, white board· or other programs, they just have to simply press a button and the program would be launched. The user interface should hide those procedures from users, which are dreary and useless to them. In the first part, my program could decide which program (server or client) to run for users. It also provides some necessary information such as server address, port number to VNC. Thus, users do not have to input it by themselves. There is only one thing could not be hidden, which is the password checking process. I have to modify the released code for VNC in order to hide this procedure.

The original and modified password checking processes are shown in the following flow charts:

The original password checking process flow chart in VNC.

flow

The modified password checking process flow chart. Modified parts are shown in red characters. Sipcsipc is the default password chosen by me for this project.

flow

There is one more thing that need to modify is the password initialization. While the user first time start vncserver, the original vncserver will ask user to input a 6 to 8 characters password as the default password. I modified it and set it to our default password for sipc, which is sipcsipc.

Related Work and Discussion

This project so far is not a coding oriented project. I have confidence in my coding style but it could not be seen in this project. Most of the work for this project is using, testing, compiling and modifying the existing codes for VNC and SIPC. This was the first time I heard about VNC and SIP (SIPC). It was also the first time I used Tcl/Tk. Thus, I spent time reading RFC and codes for these two programs (VNC and SIPC) and learning Tcl/Tk. It turns out that the portion of code needed to be modified to finish this project is not big, but it did take me a lot of time to understand all those new stuff before the real coding work.

The following is some facts that need to be noticed for VNC:

I got no problem compiling the Linux version VNC. It can be compiled by gun make, which is the default setting for Linux machines on campus.

VNC for different operating systems

There are similar but different VNCs for different operating systems. User got to have correct VNC for his operating system. One solution is wrapping all three versions of VNCs for UNIX, LINUX and windows in sipc. However, that is not a good idea. The correct way should be wrap the correct VNC for correct operating system. This is one thing that we should double check before putting sipc into market.

Future Work

Program Documentation

I modified 1) media.conf, 2) .mimecap, 3) control_invite.tcl of Xiaotao Wu's sip client SIPC. I modified 1) ClientConnection.cpp, 2) vncClient.cpp, 3) vncProperties.cpp for Windows version VNC and 1) auth.c, 2) rfbproto.c, 3) vncpasswd.c for UNIX and Linux version VNC.

Operating system: Sun OS, UNIX/Linux and Windows system. Environment reqirement: Tcl & Tk v8.4 a1.

References


Last updated by Henning Schulzrinne