คำขอ HTTP ของ Java ทำงานผ่าน SOCKS แต่คุณลักษณะ UDP ยังคงส่งทราฟฟิกโดยตรงหรือล้มเหลว การตั้งค่า คุณสมบัติ SOCKS ของ JVM ไม่ได้ให้ DatagramSocket มีการใช้งาน SOCKS5 UDP

DatagramSocket API ส่งและรับดาตาแกรมที่กำหนดที่อยู่ไปยังปลายทางเครือข่าย เมธอด connect() ของเมธอดจะเลือกคู่สนทนาสำหรับซ็อกเก็ตนั้น มันไม่ได้ดำเนินการเจรจา SOCKS กับคู่สนทนา

เส้นทาง UDP ผ่าน SOCKS5 ต้องทำงานเพิ่ม

SOCKS5 กำหนด ความสัมพันธ์ UDP ที่สร้างขึ้นบนการเชื่อมต่อควบคุม TCP จากนั้นไคลเอนต์จะ แลกเปลี่ยนดาตาแกรมที่ห่อหุ้มกับที่อยู่รีเลย์ที่พร็อกซีให้มา ข้อความที่ห่อหุ้มแต่ละข้อความระบุปลายทางของตน การใช้งานไคลเอนต์ต้องจัดการการห่อหุ้มนั้นและอายุของการเชื่อมต่อควบคุม

การชี้ UDP socket ธรรมดาไปยังพอร์ตฟัง TCP ของพร็อกซีจะข้ามขั้นตอนเหล่านั้น การส่งดาตาแกรมดิบของ แอปพลิเคชันไปยังที่อยู่นั้นไม่ใช่สิ่งทดแทนความสัมพันธ์

เลือกไลบรารีหรือคุณลักษณะของแอปพลิเคชันที่รองรับการส่งต่อ UDP ผ่าน SOCKS5 อย่างชัดเจน และยืนยันว่า เซิร์ฟเวอร์รองรับด้วย ไลบรารีที่โฆษณาการรองรับ SOCKS อาจใช้งานได้เฉพาะ TCP CONNECT ข้อกำหนดของ โปรโตคอลแยกคำสั่งเหล่านี้

การส่งต่อ UDP ก็ต้องมีเส้นทางที่ใช้งานได้

การเชื่อมต่อ TCP ที่สำเร็จไปยังพร็อกซีจะสร้างเฉพาะเส้นทางควบคุม ไฟร์วอลล์หรือพฤติกรรมของ NAT ยังคง รบกวนดาตาแกรมที่ส่งไปยังรีเลย์ได้ รวบรวมปลายทางรีเลย์ที่ส่งคืนมาและข้อผิดพลาดของรีเลย์ใด ๆ ก่อนสรุปว่า ปลายทางของแอปพลิเคชันออฟไลน์

สุดท้าย การรองรับการขนส่ง SOCKS ไม่ได้เพิ่มการรับประกันการส่งมอบให้กับ UDP เวลาหมดเวลา การจัดการการ สูญหาย และข้อจำกัดขนาดข้อความของแอปพลิเคชันของคุณยังคงมีผลหลังเส้นทางเปลี่ยน

บทความที่เกี่ยวข้อง