Otváranie TCP toku cez SOCKS5 pomocou Qt
Pred pripojením k cieľu nastavte explicitnú proxy pre QTcpSocket, s Qt Network bez požiadavky na GUI.
Qt Network dokáže priamo vyjednať SOCKS5 pre TCP socket. V existujúcej aplikácii Qt nakonfigurujte socket pred pripojením:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket je existujúci QTcpSocket. Cieľ a port v príklade predstavujú TCP službu aplikácie. Qt najprv dosiahne proxy a potom ho požiada, aby sa pripojilo k tomuto cieľu. Pre verejne dostupnú TCP službu, kde je povolený verejný sprostredkovateľ, zoznam proxy SOCKS5 poskytuje kandidátov pre tento príklad bez proxy účtu. Overte, či kandidát povoľuje skutočného hostiteľa a port služby.
Bežné asynchrónne signály socketu stále platia: pred výmenou aplikačných údajov počkajte na connected() a spracujte errorOccurred(). Udržujte objekt socketu nažive, kým je spojenie v používaní. Pre blokujúci kód namiesto toho použite zdokumentované metódy čakania Qt s úmyselne nastaveným časovým limitom.
Vyžaduje to Qt Network, nie GUI založené na widgetoch. Toto explicitné nastavenie patrí tomuto socketu. Iné sockety si môžu zachovať predvolené hodnoty aplikácie alebo zvoliť inú proxy. Aby bol tento socket priamy, pred pripojením nastavte jeho typ proxy na QNetworkProxy::NoProxy.