在绑定套接字之前设置 Qt 的 SOCKS5 UDP 代理
对现有的 QUdpSocket 使用 setProxy,然后读取实际绑定的地址和端口,而不是假设所请求的端口被保留。
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
QStringLiteral("proxy.example.net"),
1080);
udpSocket->setProxy(proxy);在 bind 或 connect 之前,将其应用到应用程序现有的 QUdpSocket 上。SOCKS 服务器必须实现 UDP association;代理能力标志和成功的 TCP 浏览并不检验该操作。对于允许的公共 UDP 测试,SOCKS5 代理列表提供候选地址,但每个候选的 UDP association 和目标可达性都必须单独验证。
| 操作 | Qt 文档记录的 SOCKS5 UDP 注意事项 |
|---|---|
| bind | 可能超时 |
| 请求非零本地端口 | 不保证会使用该端口 |
| 检查结果 | 读取 localPort 和 localAddress 以获取实际信息 |
中继会增加一条 UDP 路径,在该路径上丢包仍然可能发生。代理账户值使用对象的 user/password 属性。
更改代理无法移动已连接的套接字。也要谨慎解读 localhost 试验:Qt 在其文档中列出的 localhost 地址上会绕过网络代理,涉及 connectToHost、bind 或 listen。