Qt Network voi neuvotella SOCKS5:n suoraan TCP-socketille. Olemassa olevassa Qt-sovelluksessa socket määritetään ennen yhdistämistä:

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

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

socket on olemassa oleva QTcpSocket. Esimerkin kohde ja portti edustavat sovelluksen TCP-palvelua. Qt tavoittaa ensin välityspalvelimen ja pyytää sitä sitten yhdistämään kyseiseen kohteeseen. Julkisesti tavoitettavissa olevalle TCP-palvelulle, jossa julkinen välittäjä sallitaan, SOCKS5-välityspalvelinluettelo tarjoaa ehdokkaita tähän esimerkkiin ilman välityspalvelintiliä. Varmista, että ehdokas sallii palvelun todellisen isäntänimen ja portin.

Tavalliset asynkroniset socket-signaalit pätevät edelleen: odota connected() ennen sovellustietojen vaihtamista ja käsittele errorOccurred(). Pidä socket-olio elossa, kun yhteys on käytössä. Estävälle koodille käytä sen sijaan Qt:n dokumentoituja odotusmenetelmiä tarkoituksellisella aikakatkaisulla.

Tämä edellyttää Qt Networkiä, ei widget-pohjaista GUI:ta. Eksplisiittinen asetus kuuluu tälle socketille. Muut socketit voivat säilyttää sovelluksensa oletukset tai valita toisen välityspalvelimen. Tehdäksesi juuri tästä socketista suoran, aseta sen välityspalvelintyyppi QNetworkProxy::NoProxy ennen yhdistämistä.

Aiheeseen liittyvät artikkelit