TCP straumes atvēršana caur SOCKS5 ar Qt
Pirms savienojuma ar galamērķi iestatiet QTcpSocket skaidri norādītu starpniekserveri, izmantojot Qt Network bez GUI.
Qt Network var tieši vienoties par SOCKS5 TCP ligzdai. Esošā Qt lietotnē konfigurējiet ligzdu pirms savienojuma:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket ir esoša QTcpSocket. Piemērā norādītais galamērķis un ports apzīmē lietotnes TCP pakalpojumu. Qt vispirms sasniedz starpniekserveri un pēc tam lūdz tam savienoties ar šo galamērķi. Ja TCP pakalpojums ir publiski sasniedzams un ir atļauts publisks starpnieks, SOCKS5 starpniekserveru saraksts piedāvā kandidātus šim piemēram bez starpniekservera konta. Pārbaudiet, vai kandidāts atļauj pakalpojuma faktisko resursdatoru un portu.
Parastie asinhronie ligzdas signāli joprojām ir spēkā: pirms lietotnes datu apmaiņas nogaidiet connected() un apstrādājiet errorOccurred(). Turiet ligzdas objektu dzīvu, kamēr savienojums tiek izmantots. Blokējošam kodam tā vietā izmantojiet Qt dokumentētās gaidīšanas metodes ar apzināti noteiktu noildzi.
Tam nepieciešams Qt Network, nevis uz logrīkiem balstīts GUI. Šis skaidrais iestatījums pieder tieši šai ligzdai. Citas ligzdas var saglabāt lietotnes noklusējumus vai izvēlēties citu starpniekserveri. Lai šī ligzda savienotos tieši, pirms savienojuma iestatiet tās starpniekservera tipu uz QNetworkProxy::NoProxy.