LibVNCServer: Pustaka untuk kemudahan implementasi server VNC. Hak Cipta (C) 2001-2003 Johannes E. Schindelin
Jika Anda memiliki pertanyaan umum, sebaiknya tanyakan di obrolan komunitas. Jika kekhawatiran Anda adalah tentang bug atau permintaan fitur, silakan gunakan pelacak masalah.
Jika Anda sudah menggunakan LibVNCServer, Anda mungkin ingin membaca NEWS.
VNC adalah sekumpulan program yang menggunakan protokol RFB (Remote Frame Buffer). Mereka dirancang untuk "mengekspor" buffer bingkai melalui internet: Anda menyiapkan server dan dapat menyambungkannya melalui pemirsa VNC. Jika server mendukung WebSockets (yang didukung oleh LibVNCServer), Anda juga dapat terhubung menggunakan penampil VNC dalam browser seperti noVNC.
Ini sudah digunakan secara luas untuk administrasi, namun tidak mudah untuk memprogram server sendiri.
Ini telah diubah oleh LibVNCServer.
Beranda memiliki daftar sementara semua proyek yang menggunakan LibVNCServer atau LibVNCClient atau keduanya.
Nama | Nomor | LibVNCServer | Klien LibVNC |
---|---|---|---|
Tidak ada | 1 | ✔ | ✔ |
Otentikasi VNC | 2 | ✔ | ✔ |
SASL | 20 | ✔ | |
MSLogon | 0xfffffffa | ✔ | |
Apple ARD | 30 | ✔ | |
TLS | 18 | ✔ | |
VeNCrypt | 19 | ✔ | |
UltraVNC MSLogonII | 113 | ✔ |
Nama | Nomor | LibVNCServer | Klien LibVNC |
---|---|---|---|
Mentah | 1 | ✔ | ✔ |
SalinRek | 2 | ✔ | ✔ |
RRE | 3 | ✔ | ✔ |
Inti | 4 | ✔ | ✔ |
hekstil | 5 | ✔ | ✔ |
Zlib | 6 | ✔ | ✔ |
Ketat | 7 | ✔ | ✔ |
Sangat | 9 | ✔ | ✔ |
TRLE | 15 | ✔ | |
ZRLE | 16 | ✔ | ✔ |
ZYWRLE | 17 | ✔ | ✔ |
KetatPNG | -260 | ✔ |
Nama | LibVNCServer | Klien LibVNC |
---|---|---|
RFB | ✔ | ✔ |
RFB terenkripsi melalui VeNCrypt | ✔ | |
RFB terenkripsi melalui AnonTLS | ✔ | |
soket web | ✔ | |
Soket Web Terenkripsi | ✔ |
LibVNCServer menggunakan CMake, yang dapat Anda unduh di sini atau, lebih baik lagi, instal menggunakan manajer paket platform Anda (apt, yum, brew, macports, chocolatey, dll.).
Anda kemudian dapat membangun melalui:
mkdir build
cd build
cmake ..
cmake --build .
Dukungan kripto di LibVNCClient dan LibVNCServer dapat menggunakan backend yang berbeda:
-DWITH_OPENSSL=ON -DWITH_GCRYPT=OFF
)-DWITH_OPENSSL=OFF -DWITH_GCRYPT=ON
)-DWITH_OPENSSL=OFF -DWITH_GCRYPT=OFF
)Dukungan Keamanan Lapisan Transportasi di LibVNCClient dan LibVNCServer dapat menggunakan:
-DWITH_OPENSSL=ON -DWITH_GNUTLS=OFF
)-DWITH_OPENSSL=OFF -DWITH_GNUTLS=ON
)Untuk beberapa contoh yang lebih komprehensif yang mencakup instalasi dependensi, lihat pengaturan build Unix CI dan Windows CI.
Lihat https://developer.Android.com/ndk/guides/cmake.html sebagai referensi, tetapi pada dasarnya intinya adalah:
mkdir build
cd build
cmake .. -DANDROID_NDK= -DCMAKE_TOOLCHAIN_FILE= -DANDROID_NATIVE_API_LEVEL=
cmake --build .
Diuji dengan MinGW-w64 di Debian, yang harus Anda instal melalui sudo apt install mingw-w64
. Anda dapat menggunakan file rantai alat yang disediakan. Ini menetapkan CMake untuk mengharapkan (opsional) dependensi win32 seperti libjpeg dan teman-teman di direktori deps
. Perhatikan bahwa Anda memerlukan paket pengembangan (mungkin buatan sendiri) untuk win32, paket -dev
yang disertakan dengan distribusi Anda tidak akan berfungsi. Perhatikan juga bahwa Anda harus meletakkan libwinpthread-1.dll
di direktori build untuk menjalankan contoh. Anda dapat menemukan DLL ini di mesin build Linux Anda melalui locate libwinpthread-1.dll
.
mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-mingw32-linux.cmake ..
cmake --build .
Lihat dokumentasi intro LibVNCServer API untuk mengetahui cara membuat instance server, menyambungkan penangan input, dan menangani kursor.
Jika Anda lebih suka mempelajari LibVNCServer dengan contoh, lihat server di direktori contoh/server.
Untuk LibVNCClient, contoh dapat ditemukan di contoh/klien.
Proses instalasi akan menginstal file pkg-config .pc untuk LibVNCServer serta LibVNCClient yang dapat Anda gunakan di sistem build Anda melalui pkg-config --cflags libvncserver
dkk.
Jika menggunakan CMake, LibVNCServer versi > 0.9.13 menyediakan file konfigurasi CMake sehingga di CMakeLists.txt proyek Anda, Anda dapat mengatakan:
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 ()
Anda dapat mencoba dukungan websockets bawaan dengan memulai server contoh dari direktori webclients melalui ../examples/example
. Penting untuk tidak memulai dari dalam direktori examples
karena jika tidak, program server tidak akan menemukan file indeks HTTP-nya. Program server akan memberi tahu Anda URL untuk mengarahkan browser web Anda. Di sana, Anda dapat mengklik Tombol noVNC untuk terhubung menggunakan submodul git penampil noVNC (dapat diinstal melalui git submodule update --init
).
Jika Anda belum memiliki sertifikat SSL yang dipercaya oleh browser Anda, cara paling nyaman untuk membuatnya adalah menggunakan minica. Pada distro berbasis Debian, Anda dapat menginstalnya melalui sudo apt install minica
, di MacOS melalui brew install minica
.
Buka direktori klien web dan buat sertifikat host dan CA melalui:
cd webclients
minica -org "LibVNC" $(hostname)
Percayai sertifikat di browser Anda dengan mengimpor cacert.crt
yang dibuat, misalnya untuk Firefox, buka Opsi->Privasi & Keamanan->Lihat Sertifikat->Otoritas dan impor cacert.crt
yang dibuat, centang kotak untuk menggunakannya untuk mempercayai situs web. Untuk browser lain, prosesnya serupa.
Kemudian, Anda akhirnya dapat memulai server contoh, memberinya kunci host dan sertifikat yang dibuat:
../examples/example -sslkeyfile $(hostname).key -sslcertfile $(hostname).crt
Program server akan memberi tahu Anda URL untuk mengarahkan browser web Anda. Di sana, Anda dapat mengklik tombol koneksi terenkripsi noVNC untuk terhubung menggunakan penampil noVNC yang dibundel menggunakan koneksi Websockets terenkripsi.
Jika koneksi client-server Anda lamban karena linknya 'lambat', ada beberapa hal yang perlu dipertimbangkan.
Pertama, Anda harus menyelidiki apakah tautan Anda memiliki throughput rendah atau latensi tinggi atau keduanya.
Pada tautan latensi tinggi, coba minta pembaruan framebuffer terus-menerus, karena RFB adalah tarikan klien secara default, bukan dorongan server. Salah satu contoh implementasi dapat ditemukan di sini dan ini jelas meningkatkan daya tanggap.
Ada juga ekstensi RFB ContinuousUpdates, tetapi ekstensi tersebut belum didukung oleh LibVNC.
Jika tautan Anda memiliki throughput rendah, pada dasarnya Anda harus mengurangi jumlah byte yang dikirim per pembaruan framebuffer:
Pada awal proyek ini Dscho, penulis aslinya, ingin menjadikannya lisensi BSD. Namun, ini didasarkan pada banyak kode GPL, jadi harus berupa GPL.
Orang-orang di AT&T bekerja sangat baik untuk menghasilkan sesuatu yang bersih dan ramping seperti VNC. Para manajer memutuskan bahwa demi ketenaran mereka, mereka akan merilis program tersebut secara gratis. Tapi tidak hanya itu! Mereka menyadari bahwa dengan merilis juga kodenya secara gratis, VNC akan menjadi anak kecil yang berevolusi, menaklukkan dunia baru, membuat orang tuanya sangat bangga. Mereka juga bisa! Untuk melindungi inovasi ini, mereka memutuskan menjadikannya GPL, bukan BSD. Perbedaan mendasarnya adalah: Anda dapat membuat program sumber tertutup yang berasal dari BSD, bukan dari GPL. Anda harus memberikan penghargaan yang pantas pada keduanya.
Produk komersial kami ingin menggunakan LibVNCServer untuk membuat server VNC kami sendiri dan mendistribusikannya. Apakah ini akan dianggap sebagai karya turunan dalam konteks GPLv2?
Ya. Harap dicatat bahwa meskipun Anda harus tetap menggunakan GPL untuk program Anda jika Anda menautkan ke LibVNCServer/LibVNCClient, Anda tidak perlu membuat kode Anda publik jika Anda menggunakan karya turunan secara internal di organisasi Anda, lihat https://www .gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
Apakah memodifikasi kode LibVNCServer atau tidak membuat perbedaan dalam menentukan apakah server VNC kami akan dianggap sebagai karya turunan?
Tidak. Hanya dengan menautkan ke LibVNCServer/LibVNCClient, program Anda menjadi karya turunan.
Program ini adalah perangkat lunak bebas; Anda dapat mendistribusikan ulang dan/atau memodifikasinya berdasarkan ketentuan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; baik versi 2 Lisensi, atau (sesuai pilihan Anda) versi yang lebih baru.
Program ini disebarluaskan dengan harapan dapat bermanfaat, namun TANPA JAMINAN APA PUN; bahkan tanpa jaminan tersirat mengenai KELAYAKAN UNTUK DIPERDAGANGKAN atau KESESUAIAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk lebih jelasnya.
Anda seharusnya sudah menerima salinan Lisensi Publik Umum GNU bersama dengan program ini; jika tidak, tulislah ke Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.