LibVNCServer:一個用於輕鬆實現 VNC 伺服器的庫。版權所有 (C) 2001-2003 Johannes E. Schindelin
如果您有一般性問題,最好在社群聊天中提問。如果您擔心的是錯誤或功能請求,請使用問題追蹤器。
如果您已經使用過 LibVNCServer,您可能會想閱讀 NEWS。
VNC 是一組使用 RFB(遠端幀緩衝區)協定的程式。它們旨在透過網路「匯出」幀緩衝區:您設定伺服器並可以透過 VNC 檢視器連接到它。如果伺服器支援 WebSockets(LibVNCServer 支援),您也可以使用瀏覽器內的 VNC 檢視器(如 noVNC)進行連線。
它已經廣泛用於管理,但自己對伺服器進行程式設計並不那麼容易。
這已被 LibVNCServer 更改。
主頁有使用 LibVNCServer 或 LibVNCClient 或兩者的所有項目的暫定清單。
姓名 | 數位 | LibVNC伺服器 | LibVNC客戶端 |
---|---|---|---|
沒有任何 | 1 | ✔ | ✔ |
VNC認證 | 2 | ✔ | ✔ |
SASL | 20 | ✔ | |
微軟登入 | 0xfffffffa | ✔ | |
蘋果ARD | 30 | ✔ | |
傳輸層安全協定 | 18 | ✔ | |
維加密 | 19 | ✔ | |
UltraVNC MSLogonII | 113 | ✔ |
姓名 | 數位 | LibVNC伺服器 | LibVNC客戶端 |
---|---|---|---|
生的 | 1 | ✔ | ✔ |
複製矩形 | 2 | ✔ | ✔ |
RRE | 3 | ✔ | ✔ |
科瑞 | 4 | ✔ | ✔ |
六角形 | 5 | ✔ | ✔ |
茲利布 | 6 | ✔ | ✔ |
緊的 | 7 | ✔ | ✔ |
極端主義者 | 9 | ✔ | ✔ |
TRLE | 15 | ✔ | |
中瑞利 | 16 | ✔ | ✔ |
齊伊爾勒 | 17 號 | ✔ | ✔ |
緊身PNG | -260 | ✔ |
姓名 | LibVNC伺服器 | LibVNC客戶端 |
---|---|---|
射頻波束 | ✔ | ✔ |
透過 VeNCrypt 加密 RFB | ✔ | |
透過 AnonTLS 加密 RFB | ✔ | |
網路套接字 | ✔ | |
加密的 Websocket | ✔ |
LibVNCServer 使用 CMake,您可以在此處下載,或者更好的是,使用您平台的套件管理器(apt、yum、brew、macports、chocolatey 等)進行安裝。
然後您可以透過以下方式建構:
mkdir build
cd build
cmake ..
cmake --build .
LibVNCClient 和 LibVNCServer 中的加密支援可以使用不同的後端:
-DWITH_OPENSSL=ON -DWITH_GCRYPT=OFF
)-DWITH_OPENSSL=OFF -DWITH_GCRYPT=ON
)-DWITH_OPENSSL=OFF -DWITH_GCRYPT=OFF
)LibVNCClient 和 LibVNCServer 中的傳輸層安全支援可以使用:
-DWITH_OPENSSL=ON -DWITH_GNUTLS=OFF
)-DWITH_OPENSSL=OFF -DWITH_GNUTLS=ON
)有關包括相依性安裝的一些更全面的範例,請參閱 Unix CI 和 Windows CI 建置設定。
請參閱 https://developer.android.com/ndk/guides/cmake.html 作為參考,但基本上可以歸結為:
mkdir build
cd build
cmake .. -DANDROID_NDK= -DCMAKE_TOOLCHAIN_FILE= -DANDROID_NATIVE_API_LEVEL=
cmake --build .
在 Debian 上使用 MinGW-w64 進行了測試,您應該透過sudo apt install mingw-w64
安裝它。您可以使用提供的工具鏈檔案。它將 CMake 設定為期望(可選)win32 依賴項,例如 libjpeg 和deps
目錄中的朋友。請注意,您需要(可能是自建的)win32 開發包,您的發行版隨附的-dev
包將無法運作。另請注意,您需要將libwinpthread-1.dll
放入建置目錄中才能執行範例。您可以透過locate libwinpthread-1.dll
在Linux 建置機器上找到此DLL。
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-mingw32-linux.cmake ..
cmake --build .
有關如何建立伺服器實例、連接輸入處理程序和處理遊標的信息,請參閱 LibVNCServer API 介紹文件。
如果您喜歡透過範例來學習 LibVNCServer,請查看 Examples/server 目錄中的伺服器。
對於LibVNCClient,可以在examples/client中找到範例。
安裝過程會為 LibVNCServer 和 LibVNCClient 安裝 pkg-config .pc 文件,您可以透過常用的pkg-config --cflags libvncserver
等在建置系統中使用它們。
如果使用 CMake,LibVNCServer 版本 > 0.9.13 提供 CMake 設定文件,因此在專案的 CMakeLists.txt 中,您可以說:
find_package (LibVNCServer)
if (LibVNCServer_FOUND)
# libs and headers location are now accessible via properties, but you only
# need to add the respective export target to your project's target_link_libraries,
# cmake will automatically add libs and headers
# eg: add client (YOUR_PROJECT_TARGET being a placeholder for your real target -
# it must be defined by add_executable or add_library):
target_link_libraries (YOUR_PROJECT_TARGET LibVNCServer::vncclient)
# add server:
target_link_libraries (YOUR_PROJECT_TARGET LibVNCServer::vncserver)
endif ()
您可以透過../examples/example
從 webclients 目錄啟動範例伺服器來嘗試內建的 websockets 支援。重要的是不要從examples
目錄中啟動,否則伺服器程式將找不到其 HTTP 索引檔案。伺服器程式會告訴您一個 URL,讓您的網頁瀏覽器指向該 URL。在那裡,您可以點擊 noVNC 按鈕以使用 noVNC 檢視器 git 子模組(可透過git submodule update --init
安裝)進行連接。
如果您還沒有瀏覽器信任的 SSL 證書,最方便的建立方法是使用 minica。在基於 Debian 的發行版上,您可以透過sudo apt install minica
來安裝它,在 MacOS 上透過brew install minica
安裝它。
前往 webclients 目錄並透過以下方式建立主機和 CA 憑證:
cd webclients
minica -org "LibVNC" $(hostname)
透過匯入已建立的cacert.crt
來信任瀏覽器中的證書,例如對於 Firefox,請前往選項->隱私權和安全性->查看證書->權限並匯入建立的cacert.crt
,勾選複選框以將其用於信任網站。對於其他瀏覽器,過程類似。
然後,您終於可以啟動範例伺服器,為其提供已建立的主機金鑰和憑證:
../examples/example -sslkeyfile $(hostname).key -sslcertfile $(hostname).crt
伺服器程式會告訴您一個 URL,讓您的網頁瀏覽器指向該 URL。在那裡,您可以點擊 noVNC 加密連線按鈕,使用捆綁的 noVNC 檢視器(使用加密的 Websockets 連線)進行連線。
如果您的客戶端-伺服器連線由於連結「慢」而緩慢,則需要考慮一些事項。
首先,您必須調查您的連結是否具有低吞吐量或高延遲或兩者兼而有之。
在高延遲連結上,嘗試連續請求幀緩衝區更新,因為 RFB 預設為客戶端拉取,而不是伺服器推送。可以在這裡找到一個範例實現,它確實提高了響應能力。
還有 ContinuousUpdates RFB 擴展,但 LibVNC 尚不支援該擴展。
如果您的連結吞吐量較低,基本上必須減少每次幀緩衝區更新發送的位元組數:
在這個計畫開始時,原作者 Dscho 希望將其設為 BSD 許可證。然而,它基於大量 GPL 程式碼,因此它必須是 GPL。
AT&T 的員工工作得非常出色,才生產出像 VNC 這樣乾淨、精簡的產品。經理們決定,為了名譽,他們將免費發布該程式。但不僅如此!他們意識到,透過免費發布代碼,VNC 將成為一個不斷發展的小孩,征服新世界,讓其父母感到非常自豪。他們也可以!為了保護這項創新,他們決定將其設為 GPL,而不是 BSD。主要區別是:您可以製作源自 BSD 的閉源程序,而不是源自 GPL。你必須對兩者給予適當的信任。
我們的商業產品想要利用LibVNCServer來創建我們自己的VNC伺服器並進行分發。這會被視為 GPLv2 上下文中的衍生作品嗎?
是的。請注意,雖然如果連結到 LibVNCServer/LibVNCClient,您的程式必須遵守 GPL,但如果您在組織內部使用衍生作品,則不必公開程式碼,請參閱 https://www .gnu.org/licenses/gpl-faq .html#GPLRequireSourcePostedPublic
修改 LibVNCServer 程式碼是否對確定我們的 VNC 伺服器是否被視為衍生作品有任何影響?
不需要。
該程式是免費軟體;您可以根據自由軟體基金會發布的 GNU 通用公共授權的條款重新分發和/或修改它;許可證的版本 2,或(由您選擇)任何更高版本。
分發此程序的目的是希望它有用,但不提供任何保證;甚至沒有適銷性或特定用途適用性的默示保證。有關更多詳細信息,請參閱 GNU 通用公共許可證。
您應該隨該程式一起收到 GNU 通用公共授權的副本;如果沒有,請寫信至 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA。