Deschiderea unui flux TCP prin SOCKS5 cu Qt
Setați proxy-ul explicit al QTcpSocket înainte de conectarea la destinație, folosind Qt Network fără cerință de GUI.
Qt Network poate negocia direct SOCKS5 pentru un socket TCP. Într-o aplicație Qt existentă, configurați socketul înainte de conectare:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket este un QTcpSocket existent. Destinația și portul din exemplu reprezintă serviciul TCP al aplicației. Qt ajunge mai întâi la proxy, apoi îi cere să se conecteze la acea destinație. Pentru un serviciu TCP accesibil public, unde este permis un intermediar public, lista de proxy SOCKS5 oferă candidați pentru acest exemplu fără cont de proxy. Confirmați că respectivul candidat permite gazda și portul reale ale serviciului.
Semnalele asincrone obișnuite ale socketului se aplică în continuare: așteptați connected() înainte de a schimba date ale aplicației și tratați errorOccurred(). Mențineți obiectul socket în viață cât timp conexiunea este folosită. Pentru cod blocant, folosiți în schimb metodele de așteptare documentate de Qt, cu un timeout stabilit deliberat.
Aceasta necesită Qt Network, nu o interfață GUI bazată pe widgeturi. Setarea explicită aparține acestui socket. Alte socketuri pot păstra valorile implicite ale aplicației sau pot alege alt proxy. Pentru ca acest socket să fie direct, setați tipul său de proxy la QNetworkProxy::NoProxy înainte de conectare.