Qt Network เจรจา SOCKS5 สำหรับซ็อกเก็ต TCP ได้โดยตรง ในแอปพลิเคชัน Qt ที่มีอยู่ ให้กำหนดค่าซ็อกเก็ตก่อนเชื่อมต่อ:

QNetworkProxy proxy(
    QNetworkProxy::Socks5Proxy,
    "proxy.example.net",
    1080
);

socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);

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

สัญญาณซ็อกเก็ตแบบอะซิงโครนัสตามปกติยังใช้ได้: รอ connected() ก่อนแลกเปลี่ยนข้อมูลของแอปพลิเคชัน และจัดการ errorOccurred() ให้คงออบเจ็กต์ซ็อกเก็ตไว้ตลอดเวลาที่ใช้การเชื่อมต่อ สำหรับโค้ดแบบบล็อก ให้ใช้เมธอดการรอที่ Qt เอกสารไว้พร้อมกำหนดเวลาหมดเวลาอย่างตั้งใจแทน

สิ่งนี้ต้องใช้ Qt Network ไม่ใช่ GUI ที่อิงวิดเจ็ต การตั้งค่าแบบระบุชัดนี้เป็นของซ็อกเก็ตนี้เท่านั้น ซ็อกเก็ตอื่นสามารถคงค่าเริ่มต้นของแอปพลิเคชัน หรือเลือกพร็อกซีอื่นได้ หากต้องการให้ซ็อกเก็ตนี้เชื่อมต่อโดยตรง ให้ตั้งค่าประเภทพร็อกซีเป็น QNetworkProxy::NoProxy ก่อนเชื่อมต่อ

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