Отваряне на 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, базиран на widgets. Явната настройка принадлежи на този сокет. Други сокети могат да запазят настройките си по подразбиране или да изберат друг прокси. За да направите този сокет директен, задайте типа му на прокси QNetworkProxy::NoProxy преди свързването.