Qt SOCKS5-UDP-Proxy vor dem Binden des Sockets setzen
Verwenden Sie setProxy auf dem vorhandenen QUdpSocket und lesen Sie anschließend die tatsächlich gebundene Adresse und den Port, statt anzunehmen, der angeforderte Port sei beibehalten worden.
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
QStringLiteral("proxy.example.net"),
1080);
udpSocket->setProxy(proxy);Wenden Sie dies auf den vorhandenen QUdpSocket der Anwendung vor bind oder connect an. Der SOCKS-Server muss UDP-Association implementieren; Proxy-Fähigkeitsflags und erfolgreiches TCP-Browsen prüfen diesen Vorgang nicht. Für einen erlaubten öffentlichen UDP-Test bietet die SOCKS5-Proxy-Liste Adresskandidaten, doch UDP-Association und Zielzugriff jedes Kandidaten müssen getrennt geprüft werden.
| Vorgang | Von Qt dokumentierte SOCKS5-UDP-Erwägung |
|---|---|
| bind | Kann in einen Timeout laufen |
| Nicht-nulligen lokalen Port anfordern | Garantiert nicht, dass dieser Port verwendet wird |
| Ergebnis prüfen | localPort und localAddress für tatsächliche Informationen lesen |
Das Relay fügt einen UDP-Pfad hinzu, auf dem Paketverlust weiterhin möglich bleibt. Proxy-Kontowerte verwenden die user/password-Eigenschaften des Objekts.
Das Ändern des Proxys kann einen verbundenen Socket nicht verschieben. Deuten Sie auch localhost-Tests sorgfältig: Qt umgeht Netzwerkproxys für seine dokumentierten localhost-Adressen in connectToHost, bind oder listen.