Отварање TCP тока кроз SOCKS5 помоћу Qt-а
Поставите експлицитни прокси за QTcpSocket пре повезивања са одредиштем, користећи Qt Network без захтева за GUI.
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 пре повезивања.