Otvaranje TCP toka kroz SOCKS5 uz Qt
Postavite eksplicitni proxy za QTcpSocket prije povezivanja na odredište, koristeći Qt Network bez potrebe za GUI.
Qt Network može direktno pregovarati SOCKS5 za TCP socket. U postojećoj Qt aplikaciji konfigurirajte socket prije povezivanja:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket je postojeći QTcpSocket. Odredište i port iz primjera predstavljaju TCP uslugu aplikacije. Qt najprije dolazi do proxyja, a zatim ga traži da se poveže na to odredište. Za javno dostupnu TCP uslugu kod koje je dopušten javni posrednik, lista SOCKS5 proxyja nudi kandidate za ovaj primjer bez proxy računa. Provjerite da kandidat dopušta stvarni host i port usluge.
Uobičajeni asinhroni signali socketa i dalje vrijede: čekajte connected() prije razmjene podataka aplikacije i obradite errorOccurred(). Držite objekat socketa živim dok je veza u upotrebi. Za blokirajući kod koristite Qt-ove dokumentovane metode čekanja s namjernim vremenskim ograničenjem.
To zahtijeva Qt Network, a ne GUI zasnovan na widgetima. Eksplicitna postavka pripada ovom socketu. Drugi socketi mogu zadržati zadane postavke aplikacije ili odabrati drugi proxy. Da ovaj socket bude direktan, postavite njegov tip proxyja na QNetworkProxy::NoProxy prije povezivanja.