LibVNCServer: VNC 서버를 쉽게 구현하기 위한 라이브러리입니다. 저작권 (C) 2001-2003 Johannes E. Schindelin
일반적인 질문이 있는 경우 커뮤니티 채팅에 문의하는 것이 가장 좋습니다. 대신 버그나 기능 요청에 대한 우려사항이 있는 경우 문제 추적기를 사용하세요.
이미 LibVNCServer를 사용했다면 NEWS를 읽어보고 싶을 것입니다.
VNC는 RFB(Remote Frame Buffer) 프로토콜을 사용하는 프로그램 세트입니다. 이는 넷을 통해 프레임 버퍼를 "내보내기" 위해 설계되었습니다. 서버를 설정하고 VNC 뷰어를 통해 서버에 연결할 수 있습니다. 서버가 WebSocket(LibVNCServer가 지원)을 지원하는 경우 noVNC와 같은 브라우저 내 VNC 뷰어를 사용하여 연결할 수도 있습니다.
이미 관리용으로는 널리 사용되고 있지만 서버를 직접 프로그래밍하는 것은 그리 쉽지 않습니다.
이는 LibVNCServer에 의해 변경되었습니다.
홈페이지에는 LibVNCServer나 LibVNCClient 또는 둘 다를 사용하는 모든 프로젝트의 임시 목록이 있습니다.
이름 | 숫자 | LibVNC서버 | LibVNC클라이언트 |
---|---|---|---|
없음 | 1 | ✔ | ✔ |
VNC 인증 | 2 | ✔ | ✔ |
SASL | 20 | ✔ | |
MS로그온 | 0xfffffffa | ✔ | |
애플 ARD | 30 | ✔ | |
TLS | 18 | ✔ | |
VenCrypt | 19 | ✔ | |
UltraVNC MSLogonII | 113 | ✔ |
이름 | 숫자 | LibVNC서버 | LibVNC클라이언트 |
---|---|---|---|
날것의 | 1 | ✔ | ✔ |
복사Rect | 2 | ✔ | ✔ |
RRE | 3 | ✔ | ✔ |
코어 | 4 | ✔ | ✔ |
육각형 | 5 | ✔ | ✔ |
즐립 | 6 | ✔ | ✔ |
단단한 | 7 | ✔ | ✔ |
극단론자 | 9 | ✔ | ✔ |
TRLE | 15 | ✔ | |
ZRLE | 16 | ✔ | ✔ |
ZYWRLE | 17 | ✔ | ✔ |
타이트PNG | -260 | ✔ |
이름 | LibVNC서버 | LibVNC클라이언트 |
---|---|---|
RFB | ✔ | ✔ |
VeNCrypt를 통해 암호화된 RFB | ✔ | |
AnonTLS를 통해 암호화된 RFB | ✔ | |
웹소켓 | ✔ | |
암호화된 웹소켓 | ✔ |
LibVNCServer는 CMake를 사용합니다. 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는 libjpeg 및 deps
디렉터리의 친구와 같은 win32 종속성을 예상하도록 설정합니다(선택 사항). 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를 배우고 싶다면 example/server 디렉터리에 있는 서버를 살펴보세요.
LibVNCClient의 경우 예제/클라이언트에서 예제를 찾을 수 있습니다.
설치 프로세스에서는 일반적인 pkg-config --cflags libvncserver
등을 통해 빌드 시스템에서 사용할 수 있는 LibVNCServer 및 LibVNCClient용 pkg-config .pc 파일을 설치합니다.
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 디렉터리에서 예제 서버를 시작하여 내장된 웹소켓 지원을 시험해 볼 수 있습니다. examples
디렉터리 내에서 시작 하지 않는 것이 중요합니다. 그렇지 않으면 서버 프로그램이 해당 HTTP 인덱스 파일을 찾을 수 없습니다. 서버 프로그램은 웹 브라우저가 가리키는 URL을 알려줄 것입니다. 여기서 noVNC-Button을 클릭하면 noVNC 뷰어 git 하위 모듈( git submodule update --init
통해 설치 가능)을 사용하여 연결할 수 있습니다.
브라우저에서 신뢰하는 SSL 인증서가 아직 없는 경우 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을 알려줄 것입니다. 여기에서 noVNC-encrypted-connection-버튼을 클릭하면 암호화된 웹소켓 연결을 사용하여 번들 noVNC 뷰어를 사용하여 연결할 수 있습니다.
링크가 '느려'서 클라이언트-서버 연결이 느린 경우 고려해야 할 몇 가지 사항이 있습니다.
먼저 링크의 처리량이 낮은지, 대기 시간이 높은지, 아니면 둘 다인지 조사해야 합니다.
대기 시간이 긴 링크에서는 RFB가 서버 푸시가 아니라 기본적으로 클라이언트 풀이므로 지속적으로 프레임 버퍼 업데이트를 요청해 보세요. 한 가지 구현 예를 여기에서 찾을 수 있으며 응답성이 확실히 향상됩니다.
ContinuousUpdates RFB 확장도 있지만 해당 확장은 LibVNC에서 아직 지원되지 않습니다.
링크의 처리량이 낮은 경우 기본적으로 프레임 버퍼 업데이트당 전송되는 바이트 수를 줄여야 합니다.
이 프로젝트를 시작할 때 원저자인 Dscho는 이 프로젝트를 BSD 라이센스로 만들고 싶었습니다. 그러나 이는 많은 GPL 코드를 기반으로 하므로 GPL이어야 합니다.
AT&T 직원들은 VNC만큼 깔끔하고 간결한 제품을 만들기 위해 정말 열심히 일했습니다. 관리자들은 명성을 위해 프로그램을 무료로 출시하기로 결정했습니다. 하지만 그 뿐만이 아닙니다! 그들은 코드도 무료로 공개함으로써 VNC가 진화하는 작은 아이가 되어 새로운 세계를 정복하고 부모님을 매우 자랑스럽게 만들 것이라는 것을 깨달았습니다. 또한 그럴 수도 있습니다! 이 혁신을 보호하기 위해 그들은 BSD가 아닌 GPL로 만들기로 결정했습니다. 주요 차이점은 GPL이 아닌 BSD에서 파생된 폐쇄 소스 프로그램을 만들 수 있다는 것입니다. 두 가지 모두에 대해 적절한 크레딧을 제공해야 합니다.
우리의 상용 제품은 LibVNCServer를 사용하여 자체 VNC 서버를 만들고 배포하려고 합니다. 이것은 GPLv2 맥락에서 파생 저작물로 간주됩니까?
예. LibVNCServer/LibVNCClient에 링크하는 경우 프로그램에 대해 GPL을 준수해야 하지만 조직 내부에서 파생 저작물을 사용하는 경우 코드를 공개할 필요는 없습니다. https://www를 참조하세요. .gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
LibVNCServer 코드를 수정해도 VNC 서버가 파생 작업으로 간주되는지 여부를 결정하는 데 아무런 차이가 없나요?
아니요. 단순히 LibVNCServer/LibVNCClient에 연결하면 프로그램이 파생물이 됩니다.
이 프로그램은 무료 소프트웨어입니다. Free Software Foundation에서 발행한 GNU General Public License의 조건에 따라 재배포 및/또는 수정할 수 있습니다. 라이선스 버전 2 또는 (귀하의 선택에 따라) 이후 버전.
이 프로그램은 유용할 것이라는 희망으로 배포되지만 어떠한 보증도 제공하지 않습니다. 상품성이나 특정 목적에의 적합성에 대한 묵시적인 보증도 제공되지 않습니다. 자세한 내용은 GNU 일반 공중 라이선스를 참조하세요.
이 프로그램과 함께 GNU General Public License의 사본을 받았어야 합니다. 그렇지 않은 경우 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA로 편지를 보내주십시오.