Qt Network peut négocier SOCKS5 directement pour une socket TCP. Dans une application Qt existante, configurez la socket avant la connexion :

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

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

socket est une QTcpSocket existante. La destination et le port de l'exemple représentent le service TCP de l'application. Qt atteint d'abord le proxy, puis lui demande de se connecter à cette destination. Pour un service TCP accessible publiquement où un intermédiaire public est autorisé, la liste de proxys SOCKS5 fournit des candidats pour cet exemple sans compte proxy. Vérifiez que le candidat autorise l'hôte et le port réels du service.

Les signaux asynchrones habituels de la socket s'appliquent toujours : attendez connected() avant d'échanger des données applicatives, et gérez errorOccurred(). Gardez l'objet socket en vie pendant l'utilisation de la connexion. Pour du code bloquant, utilisez plutôt les méthodes d'attente documentées de Qt avec un délai d'expiration délibéré.

Cela nécessite Qt Network, pas une interface graphique basée sur widgets. Le réglage explicite appartient à cette socket. D'autres sockets peuvent conserver les valeurs par défaut de l'application ou choisir un autre proxy. Pour rendre cette socket directe, définissez son type de proxy sur QNetworkProxy::NoProxy avant la connexion.

Articles similaires