Qt Network può negoziare SOCKS5 direttamente per un socket TCP. In un'applicazione Qt esistente, configurare il socket prima della connessione:

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

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

socket è un QTcpSocket esistente. La destinazione e la porta dell'esempio rappresentano il servizio TCP dell'applicazione. Qt raggiunge prima il proxy, poi gli chiede di connettersi a quella destinazione. Per un servizio TCP raggiungibile pubblicamente dove è consentito un intermediario pubblico, la lista di proxy SOCKS5 fornisce candidati per questo esempio senza account proxy. Verificate che il candidato consenta l'host e la porta effettivi del servizio.

I normali segnali asincroni del socket valgono ancora: attendete connected() prima di scambiare dati dell'applicazione e gestite errorOccurred(). Mantenete vivo l'oggetto socket finché la connessione è in uso. Per il codice bloccante, usate invece i metodi di attesa documentati di Qt con un timeout deliberato.

Questo richiede Qt Network, non una GUI basata su widget. L'impostazione esplicita appartiene a questo socket. Altri socket possono mantenere i valori predefiniti dell'applicazione o scegliere un altro proxy. Per rendere diretto questo socket, impostate il suo tipo di proxy su QNetworkProxy::NoProxy prima della connessione.

Articoli correlati