Obrir un flux TCP a través de SOCKS5 amb Qt
Configureu el proxy explícit de QTcpSocket abans de connectar-vos a la destinació, amb Qt Network i sense necessitat d'interfície gràfica.
Qt Network pot negociar SOCKS5 directament per a un sòcol TCP. En una aplicació Qt existent, configureu el sòcol abans de connectar:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket és un QTcpSocket existent. La destinació i el port de l'exemple representen el servei TCP de l'aplicació. Qt arriba primer al proxy i després li demana que es connecti a aquesta destinació. Per a un servei TCP accessible públicament on es permet un intermediari públic, la llista de proxys SOCKS5 ofereix candidats per a aquest exemple sense compte de proxy. Comproveu que el candidat permeti l'amfitrió i el port reals del servei.
Els senyals asíncrons habituals del sòcol continuen aplicant-se: espereu connected() abans d'intercanviar dades de l'aplicació i gestioneu errorOccurred(). Mantingueu viu l'objecte del sòcol mentre la connexió estigui en ús. Per a codi bloquejant, feu servir els mètodes d'espera documentats de Qt amb un temps d'espera deliberat.
Això requereix Qt Network, no una interfície gràfica basada en widgets. La configuració explícita pertany a aquest sòcol. Altres sòcols poden conservar els valors predeterminats de l'aplicació o triar un altre proxy. Per fer aquest sòcol directe, establiu el seu tipus de proxy a QNetworkProxy::NoProxy abans de connectar.