Qt Network umí přímo vyjednat SOCKS5 pro TCP socket. V existující aplikaci Qt nakonfigurujte socket před připojením:

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

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

socket je existující QTcpSocket. Cíl a port v příkladu představují TCP službu aplikace. Qt nejprve dosáhne proxy a poté ji požádá o připojení k tomuto cíli. Pro veřejně dostupnou TCP službu, kde je povolen veřejný prostředník, seznam SOCKS5 proxy nabízí kandidáty pro tento příklad bez proxy účtu. Ověřte, že kandidát povoluje skutečný hostitel a port služby.

Obvyklé asynchronní signály socketu stále platí: před výměnou dat aplikace počkejte na connected() a ošetřete errorOccurred(). Udržujte objekt socketu naživu, dokud je spojení používáno. Pro blokující kód použijte místo toho dokumentované čekací metody Qt se záměrným časovým limitem.

To vyžaduje Qt Network, nikoli GUI založené na widgetech. Explicitní nastavení patří tomuto socketu. Ostatní sockety si mohou ponechat výchozí hodnoty aplikace nebo zvolit jinou proxy. Chcete-li tento socket učinit přímým, nastavte před připojením jeho typ proxy na QNetworkProxy::NoProxy.

Související články