การเปิดสตรีม TCP ผ่าน SOCKS5 ด้วย Qt
ตั้งค่าพร็อกซีแบบระบุชัดของ QTcpSocket ก่อนเชื่อมต่อกับปลายทาง โดยใช้ Qt Network ที่ไม่ต้องมี GUI
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 ก่อนเชื่อมต่อ