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 заснован на widget-и. Изречената поставка припаѓа на овој сокет. Другите сокети можат да ги задржат стандардните вредности на апликацијата или да изберат друго прокси. За овој конкретен сокет да биде директен, поставете го неговиот тип на прокси на QNetworkProxy::NoProxy пред поврзувањето.

Поврзани статии