Qt Network kan förhandla SOCKS5 direkt för en TCP-socket. I en befintlig Qt-applikation konfigurerar du socketen innan du ansluter:

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

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

socket är en befintlig QTcpSocket. Målet och porten i exemplet står för applikationens TCP-tjänst. Qt når först proxyn och ber den sedan ansluta till målet. För en allmänt tillgänglig TCP-tjänst där en offentlig mellanhand är tillåten ger SOCKS5-proxylistan kandidater för det här exemplet utan proxykonto. Bekräfta att kandidaten tillåter tjänstens faktiska värd och port.

De vanliga asynkrona socket-signalerna gäller fortfarande: vänta på connected() innan du utbyter applikationsdata och hantera errorOccurred(). Håll socketobjektet vid liv medan anslutningen används. För blockerande kod använder du i stället Qts dokumenterade väntemetoder med en medvetet vald tidsgräns.

Detta kräver Qt Network, inte ett GUI baserat på widgets. Den explicita inställningen tillhör den här socketen. Andra sockets kan behålla applikationens standardvärden eller välja en annan proxy. För att göra just den här socketen direkt ställer du in dess proxytyp på QNetworkProxy::NoProxy innan du ansluter.

Relaterade artiklar