Qt Network gali tiesiogiai derėtis dėl SOCKS5 TCP lizdui. Esamoje Qt programoje sukonfigūruokite lizdą prieš prisijungimą:

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

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

socket yra esamas QTcpSocket. Pavyzdyje nurodytas paskirties adresas ir prievadas atstoja programos TCP paslaugą. Qt pirmiausia pasiekia tarpinį serverį, o paskui paprašo jo prisijungti prie tos paskirties. Jei TCP paslauga pasiekiama viešai ir leidžiamas viešas tarpininkas, SOCKS5 tarpinių serverių sąrašas pateikia kandidatus šiam pavyzdžiui be tarpinio serverio paskyros. Patikrinkite, ar kandidatas leidžia tikrąjį paslaugos mazgo vardą ir prievadą.

Įprasti asinchroniniai lizdo signalai vis dar galioja: prieš keisdamiesi programos duomenimis palaukite connected(), o errorOccurred() apdorokite. Laikykite lizdo objektą gyvą, kol ryšys naudojamas. Blokuojančiam kodui vietoj to naudokite Qt dokumentuotus laukimo metodus su sąmoningai nustatytu laukimo laiku.

Tam reikia Qt Network, o ne valdikliais pagrįsto GUI. Šis aiškus nustatymas priklauso būtent šiam lizdui. Kiti lizdai gali išlaikyti programos numatytuosius nustatymus arba pasirinkti kitą tarpinį serverį. Kad šis lizdas jungtųsi tiesiogiai, prieš prisijungimą nustatykite jo tarpinio serverio tipą į QNetworkProxy::NoProxy.

Susiję straipsniai