Налаштуйте SOCKS5 UDP-проксі Qt перед прив'язкою сокета
Використайте setProxy на наявному QUdpSocket, потім прочитайте фактично прив'язані адресу та порт, а не припускайте, що запитаний порт зберігся.
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
QStringLiteral("proxy.example.net"),
1080);
udpSocket->setProxy(proxy);Застосуйте це до наявного QUdpSocket програми перед bind або connect. Сервер SOCKS має реалізувати UDP-асоціацію; прапорці можливостей проксі та успішний перегляд через TCP не перевіряють цю операцію. Для дозволеного публічного UDP-тесту список SOCKS5-проксі пропонує адреси-кандидати, але UDP-асоціацію та доступ до цілі кожного кандидата треба перевіряти окремо.
| Операція | Особливість SOCKS5 UDP, задокументована Qt |
|---|---|
| bind | Може завершитися за тайм-аутом |
| Запит ненульового локального порту | Не гарантує, що цей порт буде використано |
| Перевірка результату | Читайте localPort і localAddress для фактичної інформації |
Ретранслятор додає шлях UDP, на якому втрата пакетів усе ще можлива. Значення облікового запису проксі використовують властивості user/password об'єкта.
Зміна проксі не може перемістити підключений сокет. Обережно тлумачте й локальні випробування: Qt обходить мережеві проксі для своїх задокументованих адрес localhost у connectToHost, bind або listen.