libvncserver-程序员宅基地

技术标签: python  网络  移动开发  

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 documentation for an API reference, the build howto for info on how to compile the libraries on your platform and the project newsfor 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 th GPL.

Looking for help or want to participate in the active development of LibVNCServer/LibVNCClient? Subscribe to the libvncserver-common mailing list.

Ohloh project report for LibVNCServer/LibVNCClient

News

2012/05/04


LibVNCServer 0.9.9 released!

This is a major release that contains numerous bugfixes and a nice bag of shiny new features, mainly full IPv6 support, the new TurboVNC encoder and support for WebSockets. 

You can get it over on  http://sourceforge.net/projects/libvncserver/files/libvncserver/0.9.9/LibVNCServer-0.9.9.tar.gz/download

Besides the fixed bugs, the cool stuff is:

- Overall changes:
  • Added noVNC HTML5 VNC viewer connect possibility to our http server. Pure JavaScript, no Java plugin required anymore! (But a recent browser...)
  • Added a GTK+ VNC viewer example.
- LibVNCServer/LibVNCClient:
  • Added support to build for Google Android.
  • Complete IPv6 support in both LibVNCServer and LibVNCClient.
- LibVNCServer:
  • Split two event-loop related functions out of the rfbProcessEvents() mechanism. This is required to be able to do proper event loop integration with Qt. Idea was taken from Vino's libvncserver fork.
  • Added TightPNG encoding support. Like the original Tight encoding, this still uses JPEG, but ZLIB encoded rects are encoded with PNG here.
  • Added suport for serving VNC sessions through WebSockets, a web technology providing for multiplexing bi-directional, full-duplex communications channels over a single TCP connection.
  • Support connections from the Mac OS X built-in VNC client to LibVNCServer instances running with no password.
  • Replaced the Tight encoder with a TurboVNC one which is tremendously faster in most cases, especially with high-color video or 3D workloads.
- LibVNCClient:
  • Added support to only listen for reverse connections on a specific IP address.
  • Support for using OpenSSL instead of GnuTLS. This could come in handy on embedded devices where only this TLS implementation is available.
  • Added support to connect to UltraVNC Single Click servers.


A hearty thanks to all that contributed!

2011/11/09


LibVNCServer 0.9.8.2 released!

This is a maintenance release that fixes a regression in libvncclient that crept in with Apple Remote Desktop support added with 0.9.8. Viewers that were not adapted to the new functionality would fail connecting to ARD servers before. 

You can get it over on  http://sourceforge.net/projects/libvncserver/files/libvncserver/0.9.8.2/LibVNCServer-0.9.8.2.tar.gz/download

2011/10/12


LibVNCServer 0.9.8.1 released!

This is a maintenance release that fixes an ABI compatibility issue introduced with 0.9.8. 

You can get it over on  http://sourceforge.net/projects/libvncserver/files/libvncserver/0.9.8.1/LibVNCServer-0.9.8.1.tar.gz/download

2011/03/30


LibVNCServer version 0.9.8 has been released today!

You can get it over on  http://sourceforge.net/projects/libvncserver/files/libvncserver/0.9.8/LibVNCServer-0.9.8.tar.gz/download

To keep the story short, this is what's new:

Overall changes:
  • Automagically generated API documentation using doxygen.
  • Added support for pkg-config.
  • Fixed Mingw32 cross compilation.
  • Fixed CMake build system.
LibVNCServer/LibVNCClient:
  • All files used by _both_ LibVNCServer and LibVNCClient were put into a 'common' directory, reducing code duplication.
  • Implemented xvp VNC extension.
  • Updated minilzo library used for Ultra encoding to ver 2.04. According to the minilzo README, this brings a significant speedup on 64-bit architechtures.
LibVNCServer:
  • Thread safety for ZRLE, Zlib, Tight, RRE, CoRRE and Ultra encodings. This makes all VNC encodings safe to use with a multithreaded server.
  • A DisplayFinishedHook for LibVNCServer. If set, this hook gets called just before rfbSendFrameBufferUpdate() returns.
  • Fix for tight security type for RFB 3.8 in TightVNC file transfer (Debian Bug #517422).
LibVNCClient:
  • Unix sockets support.
  • Anonymous TLS security type support.
  • VeNCrypt security type support.
  • MSLogon security type support.
  • ARD (Apple Remote Desktop) security type support.
  • UltraVNC Repeater support.
  • A new FinishedFrameBufferUpdate callback that is invoked after each complete framebuffer update.
  • A new non-forking listen (reverse VNC) function that works under Windows.
  • IPv6 support. LibVNCClient is now able to connect to IPv6 VNC servers.
  • IP QoS support. This enables setting the DSCP/Traffic Class field of IP/IPv6 packets sent by a client. For example starting a client with -qosdscp 184 marks all outgoing traffic for expedited forwarding. Implementation for Win32 is still a TODO, though.
  • Fixed hostname resolution problems under Windows.
SDLvncviewer
  • Is now resizable and can do key repeat, mouse wheel scrolling and clipboard copy and paste.
LinuxVNC:
  • Fix for no input possible because of ctrl key being stuck. Issue was reported as Debian bug #555988.

Thanks to all that contributed!

2010/11/29

LibVNCServer/LibVNCClient now have a new website (inspired by the FFmpeg one) including API documentation.

2005/09/29

LibVNCServer now sports a brand new method to extend the protocol, thanks to Rohit Kumar! He also extended the library to support RFB 3.7. Furthermore, he contributed TightVNC file transfer protocol support to LibVNCServer!

2005/05/25

LibVNCClient now features ZRLE decoding!

2005/05/15

Another round of valgrinding completed. This time it is augmented by changes instigated by using Linus' sparse. In the course, the complete sources were converted to ANSI C.

2005/05/07

The member socketInitDone was renamed to socketState, and no longer contains a bool value. This allows us to quit a server cleanly from the event loop via rfbShutdownServer(), so that the structures can be cleaned up properly. This is demonstrated in examples/example.c.

2005/01/21

The function rfbMakeMaskFromAlphaSource() applies a Floyd-Steinberg dither to approximate a binary mask from a cursor with alpha channel. A demonstration can be found in test/cursortest.c.

2005/01/16

Renamed this page to reflect that LibVNCClient is actually very usable.

2005/01/16

Karl Runge has done awesome work to support cursors with alpha blending! You can try it with x11vnc as in CVS, or wait a few more days for x11vnc to be released officially!

2005/01/15

Happy new year! It begins with a new macro recorder based on LibVNCServer/LibVNCClient using perl as script language. The macro recorder is itself written in perl, and writes out perl scripts, acting as a VNC proxy, so that you can connect a vncviewer to it, and it records all your input, possibly looking for a certain button, image, word, etc. before continuing. I called it VisualNaCro, and it's in CVS.

2004/12/20

Just before christmas, a new release! Version 0.7 brings you the first non-beta of LibVNCServer...

2004/12/02

Finally MinGW32 support. I only had problems with a vncviewer which wouldn't connect to localhost: I use SDLvncviewer...

2004/12/01

LibVNCClient is getting better and better... Expect a very powerful client soon!

2004/10/16

LibVNCServer has automated test, thanks to LibVNCClient (included). It doesn't do ZRLE yet, and exposed some bugs, the only remaining of these is CoRRE (not sure yet if it's a bug in the client or the server).

2004/09/14

Added Success stories.

2004/09/07

The API was cleaned up. The structures and functions now have a prefix (mostly "rfb", sometimes "zrle" or "sra") in order not to clutter the namespace, while the structure's members don't need such a prefix.

2004/08/17

I finally came around to fix mouse behaviour in QEMU's VNC frontend for Windows 98. Please find the patch here. If mouse behaves strangely, try to wiggle the pointer to a free spot on the desktop, hit Ctrl+Shift and release them. After that, the mouse should behave nicely.

2004/06/07

After silently being added almost a year ago, libvncclient's API was modified for real use, and three examples were added: ppmtest (a very simple demo), SDLvncviewer, and vnc2mpg (which lets you record your VNC session to a movie). Automated regression tests of the libraries are planned.

2004/06/02

x11vnc-0.6.1 was released! This reflects the long way the original, small example has gone, improved in many possible ways and having a broad user base.

2004/05/29

Some patches were created for QEMU, a FAST! emulator by Fabrice Bellard, to control those sessions with a vncviewer.

2004/02/29

LibVNCServer is listed as a project using Valgrind!

2003/11/07

Version 0.6 is out! x11vnc performance boosts! You no longer need a c++ compiler in order to have ZRLE coding! LinuxVNC was added (This is to the text console what x11vnc is to X11)!

2003/02/21

rdp2vnc is in rdesktop's CVS.

2003/02/19

A preliminary patch for rdesktop (CVS) to make rdp2vnc, a translator from Windows Terminal Server's protocol to VNC's protocol, is available. It needs a new version of libvncserver; try CVS until I release 0.6.

2003/02/09

Version 0.5 is out! Features include autoconf based configure, rpm package (YMMV), cleanup of directory structure, NEW x11vnc! ZRLE encoding! HTTP tunnelling through LibVNCServer's HTTP support! Many bug fixes!

2002/07/28

Version 0.4 is out! Biggest feature: NewFB encoding. Quite a few bugfixes also (Thanks to all!).

2001/12/14

A new version of rdesktop+vnc is available! (Includes support for other platforms keyboard mapping with plain rdesktop!)

2001/10/23

Added a link to my homepage at the end.

2001/10/18

I released the rdp2vnc extensions as well as patches for general keyboard handling, working inside Xvnc and process_text2 (the famous "font:" error) to rdesktop. Please find it on the download page.

2001/10/13

A snapshot of LibVNCServer and RDP2VNC is now available. You can also download the diff against rdesktop-1.1.0. rdp2vnc also contains the patches for keyboards other than PC keyboards, and you can specify "-k fr" again.


How to Build

The prerequisites:

  • The usual C compiler with headers and stuff.
  • For the more advanced VNC encodings: zlib and libjpeg development packages.
  • If you want to try out the provided client example: libSDL development package version >= 1.2.0.

To configure the source:

On Unix/Linux platforms, just the usual:

./configure

If crosscompiling for Windows using MinGW (The WINVER define 'unlocks' some newer features of the Win32 TCP/IP stack. The LDFLAGS setting allows building of DLLs provided you have ws2_32.dll available in your linker path.):

CPPFLAGS=-DWINVER=0x0501 ./configure  \
	    --build=<your build system type> --host=i586-mingw32msvc --with-sdl-config=<your win32 sdl-config> \
            --with-zlib=<path to your win32 zlib> --with-jepg=<path to your win32 libjpeg> \
            --with-gnutls=<path to your win32 gnutls or 'no'> \
            --with-gcrypt=<path to your win32 libgcrypt or 'no'>

If building for Android:

  • 1. Read <NDK location>/docs/STANDALONE-TOOLCHAIN.html.
  • 2. Setup your toolchain according to step 3 in the above file.
  • 3. Execute
./configure --host=arm-eabi CC=arm-linux-androideabi-gcc


Building:

As always, it's done by typing:

make

That's it....


转载于:https://my.oschina.net/u/136923/blog/72671

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34404393/article/details/91976993

智能推荐

JEECG - 基于代码生成器的J2EE智能开发框架 续六 JEECG 前台页面和后台交互讲解_easyui代码生成器 java-程序员宅基地

文章浏览阅读291次。JEECG - 基于代码生成器的J2EE智能开发框架 续六 JEECG 前台页面和后台交互讲解_easyui代码生成器 java

MFC90条技巧-带目录_mfc status message-程序员宅基地

文章浏览阅读2.3k次。1."属性页的添加:2."List Control中标题栏(Column)的添加:3."ToolBar和StatusBar中控件的添加:4."通过Control创建的控件,对其属性的动态控制:5."窗口的分割与停靠:6. ①怎样在程序开始的时候让它最大化?②vc++做出来的exe文件在窗体的右上方是没有最大化和最小化按钮的,怎样实现这一功能?_mfc status message

C++ 构造函数和析构函数 详解_c构造函数和析构函数-程序员宅基地

文章浏览阅读2.3w次,点赞145次,收藏780次。C++中用构造函数和析构函数来初始化和清理对象,这两个函数将会被编译器自动调用。对象的初始化和清理是非常重要的,如果我们不提供构造函数与析构函数,编译器会自动提供两个函数的空实现。............_c构造函数和析构函数

C++11 多线程_c11多线程打印abc十次-程序员宅基地

文章浏览阅读282次。C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件、、、等用于支持多线程。使用C++11开启一个线程是比较简单的,下面来看一个简单的例子:#include #include_c11多线程打印abc十次

[转]开源大数据处理工具汇总_开源 数据转换-程序员宅基地

文章浏览阅读483次。查询引擎一、Phoenix贡献者::Salesforce简介:这是一个Java中间层,可以让开发者在Apache HBase上执行SQL查询。Phoenix完全使用Java编写,代码位于GitHub上,并且提供了一个客户端可嵌入的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、..._开源 数据转换

【C++学习】map和set-程序员宅基地

文章浏览阅读963次,点赞26次,收藏10次。【C++学习】map和set

随便推点

移动端web使用了input type=file点击却无法打开文件选择器(vue)_html 的input 在夸克浏览器中无法使用选择文件-程序员宅基地

文章浏览阅读4k次。**问题:**移动端web使用了input type=file点击却无法打开文件选择器(vue),找了好一会才找到问题所在,原因是在input的上级元素上的事件上添加了阻止默认事件。去掉之后就可以打开了。_html 的input 在夸克浏览器中无法使用选择文件

命令模式—C++实现撤消重做_c++中撤销和恢复的设计逻辑-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏23次。Command结构 意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。适用性 1、抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(c a l l b a c k )函数表达这种参数化机制。所谓回调函数是指函数先在某处注册,而它将在稍后某个需要的时候被调用。C o m m a n d 模式是回调机制的一个面向对象的替_c++中撤销和恢复的设计逻辑

移动通信核心网络技术总结(三)EPC网络的结构及原理_epc网络架构图-程序员宅基地

文章浏览阅读1.2w次,点赞11次,收藏128次。核心网络技术总结(三)EPC网络原理EPC网络结构及功能EPC网络中存在着以下几个网元:eNodeB、MME、HSS、PCRF、SGW、PGW我们可以拿坐火车的过程进行类比,我们把数据比作乘客,那么eNodeB就相当于火车站,数据从eNodeB上车。MME和HSS就相当于火车站的播报员和管理员,他们告诉你在哪个候车厅上车、车去哪里。当你知道去哪里候车后,要通过SGW上车,SGW就相当于检票口,过了这个口数据就从用户端到达了PDN端,相当于上了火车通过这里前往别的省份, PDN将带领你前_epc网络架构图

自动化安装Linux系统—ftp_ftp://192.168.9.157-程序员宅基地

文章浏览阅读1.9k次。autoinstall_system—ftp文章目录autoinstall_system—ftp服务介绍工作过程第一步:PXE Client向DHCP服务器发送请求第二步:DHCP服务器提供信息第三步:PXE客户端请求下载启动文件第四步:Boot Server响应客户端请求并传送文件第五步:请求下载自动应答文件第六步:客户端安装操作系统实验环境需要安装的服务操作过程一、 关闭selinux 和 防火墙二、部署 DHCP 服务器1、修改配置2、重启服务3、查看dhcp服务三、部署tftp-server服._ftp://192.168.9.157

D L N A介 绍-程序员宅基地

文章浏览阅读799次。这部分的内容大多来源于网络及官方文档,按照自己的翻译理解整理所成。东西比较多,从头慢慢看还是可以懂个大概的。 目录:一、DNLA的建立二、DLNA的成员三、DLNA标准的制定四、DLNA的设备五、DLNA的架构六、云时代的数字家庭(待填坑) 扩展阅读I: UPnP的工作过程------------DLNA基础协议框架扩展阅读II UPnP AV(Audi

用JAVA实现记事本_记事本 cambria math 分数-程序员宅基地

文章浏览阅读275次。用Java语言实现Windows版本的记事本程序(实现了部分功能模块的记事本),代码复制粘贴如下:import java.awt.;import java.io.;import java.awt.event.;import javax.swing.;import java.net.;import javax.swing.border.;import java.util.Date;import java.text.SimpleDateFormat;import java.lang.*;_记事本 cambria math 分数