Qt Network може директно да преговара SOCKS5 за TCP сокет. У постојећој Qt апликацији конфигуришите сокет пре повезивања:

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

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

socket је постојећи QTcpSocket. Одредиште и порт у примеру представљају TCP услугу апликације. Qt најпре долази до проксија, а затим га тражи да се повеже са тим одредиштем. За јавно доступну TCP услугу код које је дозвољен јавни посредник, списак SOCKS5 проксија нуди кандидате за овај пример без прокси налога. Проверите да ли кандидат дозвољава стварни хост и порт услуге.

Уобичајени асинхрони сигнали сокета и даље важе: сачекајте connected() пре размене података апликације и обрадите errorOccurred(). Држите објекат сокета живим док је веза у употреби. За блокирајући код уместо тога користите документоване методе чекања Qt са намерно постављеним временским ограничењем.

За то је потребан Qt Network, а не GUI заснован на виџетима. Ово експлицитно подешавање припада овом сокету. Други сокети могу да задрже подразумеване вредности апликације или да изаберу други прокси. Да би овај сокет био директан, поставите његов тип проксија на QNetworkProxy::NoProxy пре повезивања.

Повезани чланци