פתיחת זרם TCP דרך SOCKS5 עם Qt
הגדירו את ה-proxy המפורש של QTcpSocket לפני החיבור ליעד, עם Qt Network ללא דרישת GUI.
Qt Network יכול לנהל משא ומתן על SOCKS5 ישירות עבור socket TCP. ביישום Qt קיים, הגדירו את ה-socket לפני החיבור:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket הוא QTcpSocket קיים. היעד והפורט בדוגמה מייצגים את שירות ה-TCP של היישום. Qt מגיע תחילה ל-proxy, ואז מבקש ממנו להתחבר ליעד הזה. עבור שירות TCP נגיש לציבור שבו מתווך ציבורי מותר, רשימת ה-proxy של SOCKS5 מספקת מועמדים לדוגמה הזו ללא חשבון proxy. ודאו שהמועמד מתיר את המארח והפורט בפועל של השירות.
אותות ה-socket האסינכרוניים הרגילים עדיין חלים: המתינו ל-connected() לפני החלפת נתוני יישום, וטפלו ב-errorOccurred(). שמרו על אובייקט ה-socket חי כל עוד החיבור בשימוש. עבור קוד חוסם, השתמשו במקום זאת בשיטות ההמתנה המתועדות של Qt עם פסק זמן מכוון.
זה דורש Qt Network, ולא GUI מבוסס widgets. ההגדרה המפורשת שייכת ל-socket הזה. sockets אחרים יכולים לשמור על ברירות המחדל של היישום או לבחור proxy אחר. כדי להפוך את ה-socket הזה לישיר, הגדירו את סוג ה-proxy שלו ל-QNetworkProxy::NoProxy לפני החיבור.