VNC logo

Virtual Network Computing

[getting started]
[keep in touch]
Others' ports and add-ons etc
Project ideas
VNC people
[AT&T Laboratories Cambridge]

VNC Extras, Add-ons and modifications

Restricting connections by IP address (TCP wrapper)
Zlib compression
Enhanced Java viewer for JDK 1.1
Share a Single Window
Wallpaper disabling version of WinVNC
Proxy for session capture/replay
VNC Tight Encoder
x0rfbserver - accessing a standard X server with VNC
Dual Monitors in Windows
Policy Editor Template for Windows
Fastpush - Batch File Installer for Windows NT
IPv6 patch for X VNC


Karl Harkimian <> sent in a patch to compile the Unix viewer so that it can reach external servers through a SOCKS firewall.  It's very simple, and the patch is here: socks-patch.txt. These patches apply to 3.3.1 but they are simple enough to apply by hand to later versions.

Obviously, you cannot access a server inside a firewall from outside without specially configuring the firewall; that's what firewalls are for! Christian A. Lademann has used an elaborate scheme:

I have had a problem with connections from my workstation to a PC connected to a customers LAN, because my firewall as well as the customers firewall does IP-masquerading. This means that my workstation can only connect to the customers firewall and the customers PC can only connect to my
firewall. The reason for this is, of course, to hide the complete LAN behind the firewall(s).

Christian's solution involved a script listening on a single accessible well-known port behind the firewall, which could accept incoming connections and redirect them to the appropriate machine.  His full details are here: rvnc.txt

Harmen van der Wal has made a patch to the VNC 3.3.3 Java Viewer Source Distribution, that allows the viewer to connect through a firewall using an HTTP proxy. This patch is available at

Restricting connections by IP address (TCP wrapper)

Note that similar functionality is now built in to the Windows VNC server.

Wolfram Gloger <>.


In the list archives I notice there was a discussion of implementing access control for Xvnc with the tcp wrapper library. I have now implemented this for 3.3.2r2. You will need to have tcpd.h and libwrap already installed.

Wolfram's full message is at .

Jared Smolens <> has done an equivalent for WinVNC. He writes:

... I wrote some code to read a list of IPs to allow and IPs to deny from a text file. The rules are identical (to the best of my knowledge) to /etc/hosts.allow and /etc/hosts.deny on my Linux box and the text file's syntax is close to that format. This is a feature which has been discussed at least once on the mailing list, so I thought that you might want to add it to the official code base. 

The x86 binaries and source code are available at: and

I have two new files, ipauth.h and ipauth.cpp. I made some changes to vncclient.cpp (but not the header) to use the class and disconnect unauthorized clients. I also have a sample "iplist.txt" file which contains the allowed IPs. 

The format of the text file works like this:

<ALLOW|DENY> <Partial/full IP>

An unlimited, unordered list of IPs (or partial IPs) may be entered into the file like this:

ALLOW 128.2.93.
DENY 128.220.

In this case, the DENY 128.220. is redundant because of the DENY ALL, but you get the point. ALLOW ALL is the default, and if the user specifies that, it is ignored. Allows always take precidence over denies. This code is not case sensitive. 

I am fairly sure that I got rid of all of my memory leaks (I ran Purify on it, but I have done some slight modifications since then). I also use the fstream library. I don't know if you consider this to be too
much overhead. 

-- Jared Smolens

zlib compression

Dave DeBarr ( has modified the X server and viewer to use zlib-based compression.  We plan to incorporate something similar in the standard release before long, but until then you can find his patches at:

In addition, Dave has provided patches for the Windows viewer at:

Luis B. Almeida has also created a version of the Windows software which you can get from .

Warren Toomey has done an alternative implementation of zlib compression, along with some other hacks, which you can get from:


Here's a different twist to VNC. Fredrik Hubinette has written a VNC-based variation on the popular x2x program.  If you run x2vnc on an X server, you can move off the side of the screen and the mouse movements will then be sent to a VNC server (eg. a PC sitting beside it) He writes:

x2vnc is basically a stripped down version of the vncviewer but with slightly different goals and a very different GUI.. :)

x2vnc emulates a 'dual head' setup by catching when the user tries to move the pointer past the edge of the screen. This allows me to control
both computers from one mouse/keyboard.

I have made x2vnc available for download from my web site:

Enhanced Java viewer for JDK 1.1

Muddassar Farooq <> has produced an enhanced version of the Java VNC viewer.

When run as a standalone application, it adds scrollbars, and the ability to specify 'host:display' as with the other VNC viewers.

It uses the Java 1.1 event model, so is 'better' Java, but won't run on older JVMs & browsers.

You can get it from .


John Wilson <> writes:

VncMonitor is intended for those people who need to monitor several remote systems. A single window is used to present all the displays. The tab or backtab key allows the user to switch between systems. The return key causes the currently viewed system display to be transferred to its own window and the user can interact with the system using the mouse and keyboard. Closing
the new window returns the monitored system display back to the initial window.

The configuration of VncMonitor is controlled by a file which contains all the information about what systems are to be monitored.

A version can be downloaded from:


John Wilson has also written VNCProxy, a Java proxy that can sit between a VNC viewer and server and can be configured to map various incoming requests to different VNC servers. You can find it at


Alastair Burr has written a similar program to allow you to switch between multiple VNC servers. VNConnector can be found here.

VNC Manager

Patrick Garnier has written VNC Manager which gives you the ability to discover all hosts running VNC Server on YOUR network. This software is designed for network administrators who want to use VNC more easily. See Patrick's web page in English or in French.


Steve Bostedor has written a utility which will scan a network and list the machines running VNC servers. You can find it at You'll need to email Steve for the password to unzip the file.

(You can also use port scanners such as nmap or Netcat to scan for the ports used by VNC. See the VNC FAQ for details of these ports.)


Note that as of 3.3.3r2, Xvnc includes the functionality of iXvnc already. However Andre's page is still the best documentation for how to use it at the moment.

Andre Moreira <> has written some patches for Xvnc to allow it to be run under the control of inetd and hence be started automatically as users connect. See for details.

Share a Single Window

CÚline FAGES <> has written some modifications for WinVNC to allow it to share a single window.

See for the modification details.

See CÚline's original message in:

Rudi De Vos has done further work based on Celine's patches. See (binaries available).

Wallpaper disabling version of WinVNC

Note that as of 3.3.3r8, there is a RemoveWallpaper option in standard WinVNC - see the WinVNC documentation for details.

Jeremy Peaks has amended WinVNC 3.3.3r7 to allow you to automatically disable the wallpaper while someone is connected to your PC. This cuts down on needless graphics being sent to the viewer, which can make VNC significantly faster. See for details.

Proxy for session capture/replay

Tim Waugh writes:

I have written two programs called rfbproxy and rfbplaymacro.

rfbproxy can be used for session capture and replay. Session replay can be looped, and cycling between multiple capture sessions is supported. (I use it for doing demos at shows.)

rfbplaymacro can be used to provide scriptable control of VNC sessions. It uses a simple scripting language to control the position of the mouse, keys to press, etc. It can be used for quality assurance for graphical applications, scriptable control of otherwise unscriptable programs, and so on.

VNC Tight Encoder

Const Kaplinsky writes:

VNC Tight Encoder adds low-bandwidth optimizations to VNC (both Unix and Windows versions). Compression ratios achieved by "tight" encoder are usually 5-75% higher than pure zlib compression. Additionally, this encoder is often much faster than zlib at both server and client sides. Other enhancements like "local cursor" feature are either implemented or in progress. Modified servers and viewers do not extend current RFB protocol and thus are fully compatible with the standard VNC software. The Tight Encoder homepage is at

x0rfbserver - accessing a standard X server with VNC

Jens Wagner has written some VNC-related tools, amongst which is a program called x0rfbserver. This is a VNC server which serves a standard X server desktop thus behaving more like WinVNC and MacVNC than does Xvnc. It is available in the rfb-n.n.n.tar.gz package from

Dual Monitors in Windows

Jay Freeman has done a patch for multiple monitor support in Windows 2000. See his message at

Policy Editor Template for Windows

Daniel Quinlan has written a policy template for VNC on Win32, which allows VNC settings to be fixed across a whole domain. Useful in big domains! See

Fastpush - Batch File Installer for Windows NT

Richard Harris has developed a batch file for Windows NT that let's it push VNC out and install it as a service to other NT boxes. See

IPv6 patch for X VNC

Mohacsi Janos writes:

Jun-ichiro itojun Itoh from the KAME project created an IPv6 patch for VNC 3.3.3r2 available from



For comments, feedback, etc, please see the 'Keeping in touch' page.
Copyright 1999 - AT&T Laboratories Cambridge