libjuice ( JUICE คือไลบรารีการสร้างการเชื่อมต่อเชิงโต้ตอบ UDP ) อนุญาตให้เปิดสตรีม User Datagram Protocol (UDP) แบบสองทิศทางด้วยการส่งผ่าน Network Address Translator (NAT)
ไลบรารีนี้เป็นการนำโปรโตคอล Interactive Connectivity Measuring (ICE) ไปใช้อย่างง่าย ทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ เขียนด้วยภาษา C โดยไม่ต้องพึ่งพาแพลตฟอร์ม POSIX (รวมถึง GNU/Linux, Android, Apple macOS และ iOS) และ Microsoft Windows ไคลเอนต์รองรับเพียงองค์ประกอบเดียวผ่าน UDP ต่อเซสชันในโทโพโลยีเครือข่ายเกตเวย์เดียวมาตรฐาน เนื่องจากควรจะเพียงพอสำหรับกรณีการใช้งานส่วนใหญ่ในปัจจุบัน
libjuice ได้รับอนุญาตภายใต้ MPL 2.0 โปรดดูใบอนุญาต
libjuice มีอยู่ใน AUR และ vcpkg การผูกมีให้สำหรับ Rust
สำหรับแอปพลิเคชันเซิร์ฟเวอร์ STUN/TURN ที่อิงจาก libjuice โปรดดูที่ Violet
ไลบรารีใช้ตัวแทน ICE เต็มรูปแบบที่เรียบง่าย (RFC5245 จากนั้น RFC8445) ซึ่งมี:
โปรโตคอล STUN (RFC5389 จากนั้น RFC8489)
เทิร์นรีเลย์ (RFC5766 จากนั้น RFC8656)
ความใหม่ของการยินยอม ICE (RFC7675)
ICE อดทนรอการเชื่อมต่อ (RFC 8863)
อินเทอร์เฟซที่ใช้ SDP (RFC8839)
รองรับ IPv4 และ IPv6 แบบดูอัลสแต็ก
ตัวเลือกมัลติเพล็กซ์บนพอร์ต UDP เดียว
ข้อจำกัดเมื่อเปรียบเทียบกับตัวแทน ICE ที่มีคุณสมบัติครบถ้วนคือ:
รองรับเฉพาะ UDP เท่านั้นเนื่องจากโปรโตคอลการขนส่งและโปรโตคอลอื่น ๆ จะถูกละเว้น
รองรับองค์ประกอบเดียวเท่านั้น ซึ่งเพียงพอสำหรับ WebRTC Data Channels และ Multiplexed RTP+RTCP
ผู้สมัครจะถูกรวบรวมโดยไม่มีการผูกมัดกับแต่ละอินเทอร์เฟซเครือข่าย ซึ่งมีพฤติกรรมเหมือนกันกับการใช้งานเต็มรูปแบบบนระบบไคลเอนต์ส่วนใหญ่
นอกจากนี้ยังใช้เซิร์ฟเวอร์ STUN/TURN น้ำหนักเบา (RFC8489 และ RFC8656) เซิร์ฟเวอร์สามารถปิดการใช้งานในเวลาคอมไพล์ด้วยการตั้งค่าสถานะ NO_SERVER
ไม่มี!
อีกทางหนึ่ง Nettle สามารถจัดเตรียมอัลกอริทึม SHA1 และ SHA256 แทนการใช้งานภายในได้
$ โคลนคอมไพล์ https://github.com/paullouisageneau/libjuice.git $ ซีดี libjuice
ไลบรารี CMake กำหนดเป้าหมาย libjuice
และ libjuice-static
ตามลำดับซึ่งสอดคล้องกับไลบรารีแบบแบ่งใช้และแบบคงที่ เป้าหมายเริ่มต้นจะสร้างไลบรารีและการทดสอบ โดยส่งออกเป้าหมายด้วยเนมสเปซ LibJuice::LibJuice
และ LibJuice::LibJuiceStatic
เพื่อเชื่อมโยงไลบรารีจากโปรเจ็กต์ CMake อื่น
$ cmake -B บิลด์ $ บิลด์ซีดี $ ทำ -j2
ตัวเลือก USE_NETTLE
อนุญาตให้ใช้ไลบรารี Nettle แทนการใช้งานภายในสำหรับ HMAC-SHA1:
$ cmake -B บิวด์ -DUSE_NETTLE=1 $ บิลด์ซีดี $ ทำ -j2
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # แทนที่ด้วยไฟล์ toolchain ของคุณ$ cd build $ ทำ -j2
$ cmake -B build -G "NMake Makefiles"$ cd build $ nmake
$ ทำ
ตัวเลือก USE_NETTLE
อนุญาตให้ใช้ไลบรารี Nettle แทนการใช้งานภายในสำหรับ HMAC-SHA1:
$ สร้าง USE_NETLE=1
ดู test/connectivity.c สำหรับตัวอย่างการเชื่อมต่อภายในเครื่องที่สมบูรณ์
ดู test/server.c สำหรับตัวอย่างเซิร์ฟเวอร์