Qt के साथ SOCKS5 से TCP स्ट्रीम खोलना
गंतव्य से कनेक्ट करने से पहले QTcpSocket का स्पष्ट प्रॉक्सी सेट करें, बिना GUI आवश्यकता के Qt Network का उपयोग करते हुए।
Qt Network TCP सॉकेट के लिए सीधे SOCKS5 पर बातचीत कर सकता है। किसी मौजूदा 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 चाहिए, widgets-आधारित GUI नहीं। स्पष्ट सेटिंग इसी सॉकेट की है। अन्य सॉकेट अपने ऐप्लिकेशन के डिफ़ॉल्ट रख सकते हैं या दूसरा प्रॉक्सी चुन सकते हैं। इस विशेष सॉकेट को सीधा बनाने के लिए कनेक्ट करने से पहले इसका प्रॉक्सी प्रकार QNetworkProxy::NoProxy सेट करें।