Åpne en TCP-strøm gjennom SOCKS5 med Qt
Sett QTcpSockets eksplisitte proxy før du kobler til målet, med Qt Network uten krav om GUI.
Qt Network kan forhandle SOCKS5 for en TCP-socket direkte. I en eksisterende Qt-applikasjon konfigurerer du socketen før du kobler til:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket er en eksisterende QTcpSocket. Målet og porten i eksempelet står for applikasjonens TCP-tjeneste. Qt når først proxyen og ber den deretter koble til målet. For en offentlig tilgjengelig TCP-tjeneste der en offentlig mellommann er tillatt, gir SOCKS5-proxylisten kandidater for dette eksempelet uten proxykonto. Bekreft at kandidaten tillater tjenestens faktiske vert og port.
De vanlige asynkrone socketsignalene gjelder fortsatt: vent på connected() før du utveksler applikasjonsdata, og håndter errorOccurred(). Hold socketobjektet i live mens forbindelsen er i bruk. For blokkerende kode bruker du i stedet Qts dokumenterte ventemetoder med en bevisst valgt tidsavbrudd.
Dette krever Qt Network, ikke en GUI basert på widgets. Den eksplisitte innstillingen tilhører denne socketen. Andre sockets kan beholde applikasjonens standardverdier eller velge en annen proxy. For å gjøre nettopp denne socketen direkte setter du proxytypen til QNetworkProxy::NoProxy før du kobler til.