LibVNCServer: a library for easy implementation of a RDP/VNC server. Copyright (C) 2001 Johannes E. Schindelin 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. This has been changed by LibVNCServer. There are two examples included: - example, a shared scribble sheet - pnmshow, a program to show PNMs (pictures) over the net. The examples are not too well documented, but easy straight forward and a good starting point. How to use ---------- To make a server, you just have to initialise a server structure using the function rfbDefaultScreenInit, like rfbScreenInfoPtr rfbScreen = rfbDefaultScreenInit(argc,argv,maxx,maxy,8,3,bpp); You then can set hooks and io functions (see below). You can use a blocking event loop, a background (pthread based) event loop, or implement your own using the processEvents function. Also, there is functionality included to draw a cursor (see below). To start also an HTTP server (running on port 5800+display_number), you have to set rfbScreen->httpdDir to a directory containing vncviewer.jar and index.vnc (like the included "classes" directory). Hooks and IO functions ---------------------- TODO Cursor handling --------------- The rfbCursor structure consists mainly of a mask and a source. The mask describes, which pixels are drawn for the cursor (a cursor needn't be rectangular). The source describes, which colour those pixels should have. The standard is an XCursor: a cursor with a foreground and a background colour (stored in backRed and similar with a range from 0-0xffff). The arrays "mask" and "source" consist of byte padded rows in MSB order (i.e. a 10x4 cursor's mask has 2x4 bytes, because 2 bytes are needed to hold 10 bits). It is very easy to make a cursor like this: char* cur=" " " xx " " x " " "; char* mask="xxxx" "xxxx" "xxxx" "xxx "; rfbCursorPtr c=rfbMakeXCursor(4,4,cur,mask); You can even set "mask" to NULL in this call and LibVNCServer will calculate a mask for you. There is also an array named "richSource" for colourful cursors. They have the same format as the frameBuffer. History ------- LibVNCServer is based on Tridia VNC and OSXvnc, which in turn are based on the original code from ORL/AT&T. License ------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.dfdf For help with OSXvnc, please visit http://www.osxvnc.com/.