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。

相关文章