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

智能推荐

[Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果强化版_unity只显示轮廓-程序员宅基地

文章浏览阅读1.4w次,点赞6次,收藏13次。大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。 在上一篇文章中,我们通过自定义着色器实现了一个简单的在3D游戏中选取、显示物体轮廓的实例。在文章最后,博主给大家留下了一个问题,就是我们的这种方法存在一定的问题,无法运用到复杂的模型上。原因是什么呢?这要从这种方法的原理上来说,其实这种方法类似于摄像机的视角方向上对物体进行了一个投影。这样的话,如果模型被其它物体遮挡的话,就会出现渲染不完全的问题,如图所示,有一位朋友在评论中提出了这个问题。那_unity只显示轮廓

SVM简单非线性分类,画出分类面与支持向量(MATLAB)-程序员宅基地

文章浏览阅读7.1k次,点赞11次,收藏73次。创造两类二维非线性可分点,使用SVM进行分类,同时画出支持向量和分类面,其实在二维的情况下就是个分界线,这个分类面并不是高维的,因为SVM的映射是个黑箱,画不出高维映射后的分类面。代码中调用了台湾大学林智仁教授的libsvm包,因为怕与MATLAB自带的SVM函数名重了,所以改成了libsvmtrain和libsvmpredict。libsvm 3.22版本的包可以到这里去下载解压后...

Yii2.0 游客访问限制_yii 未登录限制-程序员宅基地

文章浏览阅读1.7k次。最近在用Yii2.0做项目,其中需要实现一个功能:没有登录不能访问部分页面,即游客身份访问限制。查了半天资料,终于找到答案。解决方法如下: 在access里,access即访问的意思,其中有个配置项 ‘only’=>['login','about'] 这是什么意思呢,意思是仅仅在login、about两个action内起作用,即当action 是login、about_yii 未登录限制

EfficientNet迁移学习(一) —— 主程序(train.py)_python 预训练efficientnet迁移学习-程序员宅基地

文章浏览阅读801次。项目背景EfficientNet系列博客与ResNet迁移学习的目标一致,均是进行二分类的迁移学习,唯一差别在于网络结构的不同。其它相关的内容,参考下面链接:ResNet迁移学习(一)—— 主程序结构,部分内容如下图所示:代码框架下面我们主要介绍train.py的程序框架和功能模块接口。程序框架是构建工程的首要步骤,而功能模块是完善框架的内容。这样在构建工程的时候,思路会比较清晰,不至于无从下手。..._python 预训练efficientnet迁移学习

excel部分网格线不见了_EXCEL-绘制箱形图-程序员宅基地

文章浏览阅读473次。特征统计可能是数据科学中最常用的统计学概念。它是你在研究数据集时经常使用的统计技术,包括偏差、方差、平均值、中位数、百分数等等。中间的直线表示数据的中位数。中位数用在平均值上,因为它对异常值更具有鲁棒性。第一个四分位数本质上是第二十五百分位数,即数据中的25%要低于该值。第三个四分位数是第七十五百分位数,即数据中的75%要低于该值。而最大值和最小值表示该数据范围的上下两端。箱形图很好地说明了基本统..._箱形图不显示中线怎么回事

SDE安装 esri_sde service failed during initialization._esri_sde service failde during initialization-程序员宅基地

文章浏览阅读2.5k次。原因:该错误出现在ArcSDE不正确或不完整的安装或配置。解决方法:确保输入正确的SDE用户密码,如果密码不正确,会在sde.errlog文件出现一个“-93”错误。确保完全的删除当前的SDE服务,建立一个新的SDE服务。1:利用SDE命令“sdeservice –o delet_esri_sde service failde during initialization

随便推点

MiniCPM模型的简单部署_minicpm-v 部署-程序员宅基地

文章浏览阅读1k次,点赞19次,收藏30次。MiniCPM 是面壁与清华大学自然语言处理实验室共同开源的系列端侧语言大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。直接在本地运行,方便我们进一步探究该模型,接下来简单介绍一下该模型的本地部署工作安装错误```解决方案:# 模型所在目录的路径将模型目录添加到 sys.path``_minicpm-v 部署

AdpterView和Adapter接口以及实现的子类_adapterview常用接口-程序员宅基地

文章浏览阅读827次。四种为AdapterView填充Adapter的方法实现Adapter或者他子接口用Adapter接口的实现子类SimapleAdapter在xml文件中指定entries属性让当前Activity继承ListActivity使用SimpleAdapter创建ListViewpackage com.phone.hty.myapplication;import android.os.Bundl_adapterview常用接口

VC随笔文档视图结构_单文档应用程序的框架窗口是唯一的主框架窗口,它的窗口类是cmain-程序员宅基地

文章浏览阅读692次。VC随笔文档视图结构使用断点调试观察MFC应用程序框架的创建过程:由于一个对象被创建时会自动调用构造函数,而一个窗口被创建时会调用OnCreate函数,因此在下列地方设置断点:1、应用程序类、文档类、框架窗口类、视图类的构造函数开始处(函数开始大括号所在行)2、CMy2DCADApp::InitInstance函数开始处、添加文档模板处、结尾处(函数结束大括号所在行)3、CMa_单文档应用程序的框架窗口是唯一的主框架窗口,它的窗口类是cmain

threejs 管子_threejs 3d 智能园区-程序员宅基地

文章浏览阅读930次。一、页面效果二、技术选择中间的建筑相关的显示和效果都是threejs实现的左右两侧用的是echarts三、代码结构1. 画布用js自己创建一个放置画布的divcontainer = document.createElement(‘div‘)document.body.appendChild(container)2. 场景的创建之后的比如几何体 摄像机 光源都是放在场景里面scene = newTH..._threejs 直角管道

计算机毕设基于springboot+MySQL的公选课在线选课系统vue-程序员宅基地

文章浏览阅读9次。spring boot+MySQL公选课在线选课系统》该项目含有源码、文档等资料、配套开发软件、软件安装教程、项目发布教程等。开发工具:IDEA(2020版)/MyEclipse(10)/Eclipse、Visual Studio Code。系统功能完整,适合作为毕业设计、课程设计、数据库大作业 参考 以及学习商用皆可。操作系统:Windows 10、Windows 7、Windows 8。前端技术:JavaScript、VUE.js(2.X)、css3。数据库:MySQL 5.7.26(版本号)

NumPy入门讲座(1):基本概念_numpy数据相关概念-程序员宅基地

文章浏览阅读1.2w次,点赞20次,收藏37次。NumPy 是 Python 科学计算的基础软件包,提供多了维数组对象,多种派生对象(掩码数组、矩阵等)以及用于快速操作数组的函数及 API,它包括数学、逻辑、数组形状变换、排序、选择、I/O 、离散傅立叶变换、基本线性代数、基本统计运算、随机模拟等等。_numpy数据相关概念