สำหรับ bootstrap/pipeline ของ Netty ที่มีอยู่ซึ่งเซิร์ฟเวอร์ SOCKS ควรแปลงปลายทาง:

bootstrap.resolver(NoopAddressResolverGroup.INSTANCE);

pipeline.addFirst(
    new Socks5ProxyHandler(new InetSocketAddress("127.0.0.1", 1080))
);

bootstrap.connect(
    InetSocketAddress.createUnresolved("example.com", 443)
);

ปลายทางพร็อกซี่คือพอร์ตโลคอล 1080 เป้าหมายการเชื่อมต่อที่ยังไม่ถูกแปลงคือ example.com:443 อย่าใช้ที่อยู่พร็อกซี่สำหรับทั้งสองบทบาท และอย่าแปลงชื่อก่อนที่ตัวจัดการจะได้รับ สำหรับเป้าหมายสาธารณะบนเส้นทางพร็อกซี่สาธารณะที่ได้รับอนุญาต รายการพร็อกซี่ SOCKS5 มีผู้สมัครสำหรับปลายทางพร็อกซี่ของตัวจัดการ

วาง Socks5ProxyHandler ก่อนตัวจัดการที่แลกเปลี่ยนทราฟฟิกไปยังปลายทาง รอ future ของการเชื่อมต่อพร็อกซี่ ไม่ใช่แค่แชนเนลที่ไปถึงตัวรับฟัง วิธีหรือปลายทางที่ถูกปฏิเสธเป็นส่วนของขั้นตอนการตั้งค่านี้

สำหรับ HTTPS ชั้น TLS ถัดไปใช้ชื่อโฮสต์ของปลายทาง การตรวจสอบและความเชื่อถือที่จำเป็น—ไม่ใช่อัตลักษณ์ของปลายทาง SOCKS จากนั้นจึงเริ่มการแลกเปลี่ยน HTTP/แอปพลิเคชัน

ส่วนย่อยนี้ไม่ได้ให้ event loop ชนิดแชนเนล ตัวจัดการ TLS/HTTP หรือการจัดการข้อผิดพลาดปกติ เลือกคอนสตรัคเตอร์ SOCKS ที่ตรงกับความต้องการการยืนยันตัวตน ตัวจัดการ HTTP Basic เป็นอีกโปรโตคอลหนึ่ง

ใช้ resolver แบบ no-op เฉพาะที่ตัวจัดการปลายน้ำนี้เป็นเจ้าของการแปลงชื่อโฮสต์ การเชื่อมต่ออื่นอาจต้องค้นหาในเครื่อง แยกเอาต์พุตของ resolver, future ของพร็อกซี่, TLS และผลลัพธ์แอปพลิเคชันออกจากกันเมื่อวินิจฉัยความล้มเหลว

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