Qt Network puede negociar SOCKS5 directamente para un socket TCP. En una aplicación Qt existente, configure el socket antes de conectar:

QNetworkProxy proxy(
    QNetworkProxy::Socks5Proxy,
    "proxy.example.net",
    1080
);

socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);

socket es un QTcpSocket existente. El destino y el puerto del ejemplo representan el servicio TCP de la aplicación. Qt llega primero al proxy y luego le pide que se conecte a ese destino. Para un servicio TCP accesible públicamente donde se permite un intermediario público, la lista de proxies SOCKS5 ofrece candidatos para este ejemplo sin cuenta de proxy. Confirme que el candidato permite el host y el puerto reales del servicio.

Las señales asíncronas habituales del socket siguen aplicándose: espere a connected() antes de intercambiar datos de la aplicación y gestione errorOccurred(). Mantenga vivo el objeto socket mientras la conexión esté en uso. Para código bloqueante, utilice en su lugar los métodos de espera documentados de Qt con un tiempo de espera deliberado.

Esto requiere Qt Network, no una GUI basada en widgets. La configuración explícita pertenece a este socket. Otros sockets pueden conservar los valores predeterminados de la aplicación o elegir otro proxy. Para hacer este socket directo, establezca su tipo de proxy en QNetworkProxy::NoProxy antes de conectar.

Artículos relacionados