Åbning af en TCP-strøm gennem SOCKS5 med Qt
Angiv QTcpSocket' eksplicitte proxy, før der oprettes forbindelse til destinationen, med Qt Network uden GUI-krav.
Qt Network kan forhandle SOCKS5 direkte for en TCP-socket. I en eksisterende Qt-applikation konfigureres socketten, før der oprettes forbindelse:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket er en eksisterende QTcpSocket. Eksemplets destination og port står for applikationens TCP-tjeneste. Qt når først proxyen og beder den derefter om at oprette forbindelse til den destination. For en offentligt tilgængelig TCP-tjeneste, hvor en offentlig mellemmand er tilladt, leverer SOCKS5-proxylisten kandidater til dette eksempel uden proxykonto. Bekræft, at kandidaten tillader tjenestens faktiske vært og port.
De normale asynkrone socketsignaler gælder stadig: vent på connected(), før der udveksles applikationsdata, og håndtér errorOccurred(). Hold socketobjektet i live, mens forbindelsen er i brug. Til blokerende kode bruges i stedet Qts dokumenterede ventemetoder med en bevidst timeout.
Dette kræver Qt Network, ikke en GUI baseret på widgets. Den eksplicitte indstilling hører til denne socket. Andre sockets kan beholde applikationens standardindstillinger eller vælge en anden proxy. For at gøre netop denne socket direkte sættes dens proxytype til QNetworkProxy::NoProxy, før der oprettes forbindelse.