libjuice( JUICE는 UDP 대화형 연결 설정 라이브러리입니다 )를 사용하면 NAT(Network Address Translator) 통과를 통해 양방향 UDP(사용자 데이터그램 프로토콜) 스트림을 열 수 있습니다.
이 라이브러리는 POSIX 플랫폼(GNU/Linux, Android, Apple macOS 및 iOS 포함) 및 Microsoft Windows에 대한 종속성 없이 C로 작성된 클라이언트 측 및 서버 측 ICE(Interactive Connectivity Deployment) 프로토콜의 단순화된 구현입니다. 클라이언트는 표준 단일 게이트웨이 네트워크 토폴로지에서 세션당 UDP를 통해 단일 구성 요소만 지원합니다. 이는 오늘날 대부분의 사용 사례에 충분하기 때문입니다.
libjuice는 MPL 2.0에 따라 라이센스가 부여됩니다. 라이센스를 참조하세요.
libjuice는 AUR 및 vcpkg에서 사용할 수 있습니다. Rust에서는 바인딩을 사용할 수 있습니다.
libjuice 기반 STUN/TURN 서버 애플리케이션에 대해서는 Violet을 참조하세요.
라이브러리는 다음 기능을 갖춘 단순화된 전체 ICE 에이전트(RFC5245, RFC8445)를 구현합니다.
STUN 프로토콜(RFC5389 이후 RFC8489)
TURN 중계(RFC5766 이후 RFC8656)
ICE 동의 최신성(RFC7675)
ICE 참을성 있게 연결을 기다리는 중(RFC 8863)
SDP 기반 인터페이스(RFC8839)
IPv4 및 IPv6 듀얼 스택 지원
단일 UDP 포트의 선택적 멀티플렉싱
모든 기능을 갖춘 ICE 에이전트와 비교한 제한 사항은 다음과 같습니다.
전송 프로토콜로는 UDP만 지원되며 다른 프로토콜은 무시됩니다.
WebRTC 데이터 채널 및 다중 RTP+RTCP에 충분한 하나의 구성 요소만 지원됩니다.
후보는 대부분의 클라이언트 시스템에서 전체 구현과 동일하게 작동하는 각 네트워크 인터페이스에 바인딩하지 않고 수집됩니다.
또한 경량 STUN/TURN 서버(RFC8489 및 RFC8656)를 구현합니다. NO_SERVER
플래그를 사용하면 컴파일 타임에 서버를 비활성화할 수 있습니다.
없음!
선택적으로 Nettle은 내부 구현 대신 SHA1 및 SHA256 알고리즘을 제공할 수 있습니다.
$ 자식 클론 https://github.com/paullouisageneau/libjuice.git $ CD libjuice
CMake 라이브러리 대상 libjuice
및 libjuice-static
각각 공유 및 정적 라이브러리에 해당합니다. 기본 대상은 라이브러리를 빌드하고 테스트합니다. LibJuice::LibJuice
및 LibJuice::LibJuiceStatic
네임스페이스를 사용하여 대상을 내보내 다른 CMake 프로젝트의 라이브러리를 연결합니다.
$ cmake -B 빌드 $ CD 빌드 $ make -j2
USE_NETTLE
옵션을 사용하면 HMAC-SHA1의 내부 구현 대신 Nettle 라이브러리를 사용할 수 있습니다.
$ cmake -B 빌드 -DUSE_NETTLE=1 $ CD 빌드 $ make -j2
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # 툴체인 파일로 교체$ cd build $ make -j2
$ cmake -B build -G "NMake Makefiles"$ cd build $ nmake
$만들다
USE_NETTLE
옵션을 사용하면 HMAC-SHA1의 내부 구현 대신 Nettle 라이브러리를 사용할 수 있습니다.
$ USE_NETTLE=1로 설정
전체 로컬 연결 예제는 test/connectivity.c를 참조하세요.
서버 예제는 test/server.c를 참조하세요.