LibVNC/libvncserver logo

LibVNC/libvncserver

Free

LibVNCServer/LibVNCClient are cross-platform C libraries that allow you to easily implement VNC server or client functionality in your program.

FreeFree tier
Type
Open Source

About LibVNC/libvncserver

LibVNCServer and LibVNCClient are cross-platform C libraries that simplify the implementation of VNC server or client functionality in applications. They support the RFB (Remote Frame Buffer) protocol with a wide range of security types (VNC Authentication, SASL, MSLogon, Apple ARD, TLS, VeNCrypt, UltraVNC MSLogonII), encodings (Raw, CopyRect, RRE, Hextile, Tight, ZRLE, etc.), and transports (RFB, encrypted RFB via VeNCrypt or AnonTLS, WebSockets, and encrypted WebSockets). The libraries use CMake for building and offer multiple crypto backends (OpenSSL, Libgcrypt, or a minimal built-in option) as well as TLS support via OpenSSL or GnuTLS. They are open source, actively maintained on GitHub, and used in many projects for remote administration, remote desktop, and in-browser VNC access.

Key Features

Cross-platform C libraries for VNC server and client implementation
Supports RFB protocol with extensive security types: VNC Authentication, SASL, MSLogon, Apple ARD, TLS, VeNCrypt, UltraVNC MSLogonII
Encodings support: Raw, CopyRect, RRE, CoRRE, Hextile, Zlib, Tight, Ultra, TRLE, ZRLE, ZYWRLE, TightPNG
Transports: RFB, encrypted RFB via VeNCrypt or AnonTLS, WebSockets, encrypted WebSockets
Build system using CMake
Multiple crypto backends: OpenSSL, Libgcrypt, or built-in minimal support
TLS support via OpenSSL or GnuTLS
In-browser VNC viewer compatibility (e.g., noVNC)
Open source with active community and issue tracker

Pros & Cons

Pros
  • Easily integrates VNC functionality into C/C++ programs
  • Cross-platform: works on Linux, Windows, macOS, Android, and more
  • Comprehensive RFB protocol support with many security and encoding options
  • Supports WebSockets and encrypted connections for modern use cases
  • Open source with a long history and active community on GitHub
Cons
  • Requires C programming knowledge to integrate and use
  • Some authentication methods need external cryptographic libraries (OpenSSL or Libgcrypt)
  • Compilation and setup may be non-trivial for beginners
  • Documentation primarily resides on GitHub and may be sparse in some areas

Best For

Embedding VNC server or client in custom applicationsRemote desktop and remote administration toolsDeveloping remote assistance or screen sharing softwareIn-browser VNC access via WebSocketsEducational projects demonstrating RFB protocol implementation

FAQ

What is LibVNCServer?
LibVNCServer is a cross-platform C library that allows easy implementation of a VNC server in your program. It uses the RFB (Remote Frame Buffer) protocol to export a frame buffer over a network.
What is LibVNCClient?
LibVNCClient is the companion library for implementing a VNC client, also written in C and part of the same project.
How do I build LibVNCServer?
The library uses CMake. You can build it by creating a build directory, running 'cmake ..', then 'cmake --build .'. Various build options are available for crypto backends and TLS support.
Does LibVNCServer support WebSockets?
Yes, LibVNCServer supports WebSockets natively, allowing connections from in-browser VNC viewers like noVNC.
What authentication methods are supported?
Supported authentication types include None, VNC Authentication, SASL, MSLogon, Apple ARD, TLS, VeNCrypt, and UltraVNC MSLogonII.
What crypto backends can be used?
LibVNCServer can use OpenSSL, Libgcrypt, or a built-in minimal backend. OpenSSL and Libgcrypt support all authentication methods and WebSockets; the built-in backend only supports VNC Authentication.