Introduction

LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program. If you don't know VNC and what it's good for, read about it here.

See the API documentation for a programming reference, the build howto for info on how to compile the libraries on your platform and the project news for a list of recent changes.


To give an example, the simplest server looks like this:

#include <rfb/rfb.h>

int main(int argc,char** argv)
{
  rfbScreenInfoPtr server=rfbGetScreen(&argc,argv,400,300,8,3,4);
  server->frameBuffer=malloc(400*300*4);
  rfbInitServer(server);
  rfbRunEventLoop(server,-1,FALSE);
  return(0);
}

This sample creates a 400x300 frame buffer in true colour. There are 4 bytes per pixel, because 3 (which are only used instead of all 4) is such an odd number. Then the server is initialized and a blocking event loop is started.

Of course, this program only shows rubbish (whatever is in the frame buffer you malloc'd) and does not do any error checking at all, but it proves that writing a server can be very easy.

For more in-depth information (especially if you want to write a real server or client) look into the provided examples and into the documentation for LibVNCServer and LibVNCClient.


LibVNCServer and LibVNCClient are free software licensed under the GPL. If you use them, you must adhere to the terms of the GPL.

Looking for help or want to participate in the active development of LibVNCServer/LibVNCClient? File an issue, chat on Gitter or subscribe to the libvncserver-common mailing list.










Projects using LibVNCServer/LibVNCClient

LibVNCServer

x11vnc

Karl Runge took Dscho’s first version of x11vnc, which was just a proof-of-concept that the library actually is usable, and turned it into a fully fledged application whose community version can nowadays be found on GitHub.

VNC for KDE

Tim Jansen created KRFB, which is x11vnc integrated into KDE.

Arecibo Radio Telescope

Jeff Mock of the world’s largest radio telescope in Arecibo sent Dscho a nice screenshot, describing his use of LibVNCServer:

I’ve been using it for about 4 months on a project to build a new spectrometer for the radio telescope at Arecibo. Arecibo is the largest radio telescope in the world (305m!) in Puerto Rico. It has 10-times the collecting area of the second largest telescope in Effelsburg (maybe near you?).

The project is an embedded linux box that boots from a compact flash card. The root filesystem is only about 5MB. X wasn’t reasonable for such a small embedded system, but libvncserver was perfect. On the console we run graphical diagnostics that write directly to the frame buffer. It was a simple matter to hook this direct-framebuffer application to libvncserver. This way we can easily view the diagnostics for the spectrometer from the control room (or anyplace else for that matter).

LCD4Linux

Small program that grabs information from the kernel and some subsystems and displays it on an external liquid crystal display. Michu let Dscho know that LCD4Linux has a VNC backend using LibVNCServer.

KCEmu

KCemu is an emulator for the KC85 homecomputer series and other Z80 based microcomputers like Z1013, LC80, Polycomputer 880 and BIC A5105.

android-vnc-server

android-vnc-server, a VNC server specifically for the Android mobile platform, forked from android-vnc project on google code. Unlike the original android-vnc, it doesn’t need a special keyboard driver built into the kernel.

Veency

Veency is a VNC server for iPhones.

GemsVNC

An X11 vnc server for remote control, with some special features over x11vnc.

VNC for Netware

VNCSRV.NLM (the VNC Server NLM for NetWare) is a prototype release of a VNC server for NetWare based on LibVNCServer.

VirtualBox

VirtualBox is a powerful x86 and AMD64/Intel64 virtualization product for enterprise as well as home use. VirtualBox uses LibVNCServer as its built-in VNC server.

Veyon

Veyon is a free and Open Source software for computer monitoring and classroom management supporting Linux and Windows.

GNOME Remote Desktop

Remote desktop and screen casting in Wayland.

LibVNCClient

AQEMU

AQEMU is a GUI for virtual machines using QEMU as the backend.

Remmina

Use other desktops remotely, from a tiny screen or large monitors. Remmina uses LibVNCClient for its VNC plugin.

KRDC

KRDC is KDEs remote desktop client.

VNCpp

A VNC viewer for Android powered by LibVNCClient.

MultiVNC

MultiVNC is a cross-platform wxWidgets VNC viewer based on LibVNCClient.

ZoneMinder

ZoneMinder uses libvncclient to record desktops.

AVNC

AVNC is a modern VNC client for Android with many features.


Create an issue if your project is missing!