|
|
|
@ -5,8 +5,9 @@ What is it?
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
VNC is set of programs using the RFB (Remote Frame Buffer) protocol. They
|
|
|
|
|
are designed to "export" a frame buffer via net. It is already in wide use
|
|
|
|
|
for administration, but it is not that easy to make a server yourself.
|
|
|
|
|
are designed to "export" a frame buffer via net (if you don't know VNC, I
|
|
|
|
|
suggest you read "Basics" below). It is already in wide use for
|
|
|
|
|
administration, but it is not that easy to program a server yourself.
|
|
|
|
|
|
|
|
|
|
This has been changed by LibVNCServer.
|
|
|
|
|
|
|
|
|
@ -175,7 +176,77 @@ History
|
|
|
|
|
LibVNCServer is based on Tridia VNC and OSXvnc, which in turn are based on
|
|
|
|
|
the original code from ORL/AT&T.
|
|
|
|
|
|
|
|
|
|
VNC fascinated me from t
|
|
|
|
|
When I began hacking with computers, my first interest was speed. So, when I
|
|
|
|
|
got around assembler, I programmed the floppy to do much of the work, because
|
|
|
|
|
it's clock rate was higher than that of my C64. This was my first experience
|
|
|
|
|
with client/server techniques.
|
|
|
|
|
|
|
|
|
|
When I came around Xwindows (much later), I was at once intrigued by the
|
|
|
|
|
elegance of such connectedness between the different computers. I used it
|
|
|
|
|
a lot - not the least priority lay on games. However, when I tried it over
|
|
|
|
|
modem from home, it was no longer that much fun.
|
|
|
|
|
|
|
|
|
|
When I started working with ASP (Application Service Provider) programs, I
|
|
|
|
|
tumbled across Tarantella and Citrix. Being a security fanatic, the idea of
|
|
|
|
|
running a server on windows didn't appeal to me, so Citrix went down the
|
|
|
|
|
basket. However, Tarantella has it's own problems (security as well as the
|
|
|
|
|
high price). But at the same time somebody told me about this "great little
|
|
|
|
|
administrator's tool" named VNC. Being used to windows programs' sizes, the
|
|
|
|
|
surprise was reciprocal inverse to the size of VNC!
|
|
|
|
|
|
|
|
|
|
At the same time, the program "rdesktop" (a native Linux client for the
|
|
|
|
|
Terminal Services of Windows servers) came to my attention. There where even
|
|
|
|
|
works under way to make a protocol converter "rdp2vnc" out of this. However,
|
|
|
|
|
my primary goal was a slow connection and rdp2vnc could only speak RRE
|
|
|
|
|
encoding, which is not that funny with just 5kB/s. Tim Edmonds, the original
|
|
|
|
|
author of rdp2vnc, suggested that I adapt it to Hextile Encoding, which is
|
|
|
|
|
better. I first tried that, but had no success at all (crunchy pictures).
|
|
|
|
|
|
|
|
|
|
Also, I liked the idea of an HTTP server included and possibly other
|
|
|
|
|
encodings like the Tight Encodings from Const Kaplinsky. So I started looking
|
|
|
|
|
for libraries implementing a VNC server where I could steal what I can't make.
|
|
|
|
|
I found some programs based on the demo server from AT&T, which was also the
|
|
|
|
|
basis for rdp2vnc (can only speak Raw and RRE encoding). There were some
|
|
|
|
|
rumors that GGI has a VNC backend, but I didn't find any code, so probably
|
|
|
|
|
there wasn't a working version anyway.
|
|
|
|
|
|
|
|
|
|
All of a sudden, everything changed: I read on freshmeat that "OSXvnc" was
|
|
|
|
|
released. I looked at the code and it was not much of a problem to work out
|
|
|
|
|
a simple server - using every functionality there is in Xvnc. It became clear
|
|
|
|
|
to me that I *had* to build a library out of it, so everybody can use it.
|
|
|
|
|
Every change, every new feature can propagate to every user of it.
|
|
|
|
|
|
|
|
|
|
It also makes everything easier:
|
|
|
|
|
You don't care about the cursor, once set (or use the standard cursor).
|
|
|
|
|
You don't care about those sockets. You don't care about encodings.
|
|
|
|
|
You just change your frame buffer and inform the library about it. Every once
|
|
|
|
|
in a while you call rfbProcessEvents and that's it.
|
|
|
|
|
|
|
|
|
|
Basics
|
|
|
|
|
------
|
|
|
|
|
|
|
|
|
|
VNC (Virtual network computing) works like this: You set up a server and can
|
|
|
|
|
connect to it via vncviewers. The communication uses a protocol named RFB
|
|
|
|
|
(Remote Frame Buffer). If the server supports HTTP, you can also connect
|
|
|
|
|
using a java enabled browser. In this case, the server sends back a
|
|
|
|
|
vncviewer applet with the correct settings.
|
|
|
|
|
|
|
|
|
|
There exist several encodings for VNC, which are used to compress the regions
|
|
|
|
|
which have changed before they are sent to the client. A client need not be
|
|
|
|
|
able to understand every encoding, but at least Raw encoding. Which encoding
|
|
|
|
|
it understands is negotiated by the RFB protocol.
|
|
|
|
|
|
|
|
|
|
The following encodings are known to me:
|
|
|
|
|
Raw, RRE, CoRRE, Hextile, CopyRect from the original AT&T code and
|
|
|
|
|
Tight, ZLib, LastRect, XCursor, RichCursor from Const Kaplinsky et al.
|
|
|
|
|
|
|
|
|
|
If you are using a modem, you want to try the "new" encodings. Especially
|
|
|
|
|
with my 56k modem I like ZLib or Tight with Quality 0. In my tests, it even
|
|
|
|
|
beats Tarantella.
|
|
|
|
|
|
|
|
|
|
There is the possibility to set a password, which is also negotiated by the
|
|
|
|
|
RFB protocol, but IT IS NOT SECURE. Anybody sniffing your net can get the
|
|
|
|
|
password. You really should tunnel through SSH.
|
|
|
|
|
|
|
|
|
|
License
|
|
|
|
|
-------
|
|
|
|
|