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 ਸੈੱਟ ਕਰੋ।