关于使用QT时写客户端连接时因使用代理出现的问题
开了VPN 或代理的话,QTcpSocket
可能会自动试图通过系统代理连接,而这个代理类型不被它支持,就会出现错误:
"The proxy type is invalid for this operation"
解决建议:
-
强制关闭 Qt 网络代理:
client->setProxy(QNetworkProxy::NoProxy);
这样就避免了 QTcpSocket
尝试用系统代理连接。
-
如果你必须用代理连接,要确保代理类型是 Qt 支持的,比如 HTTP 或 SOCKS5 代理,且用正确的方式配置。
-
或者,在使用梯子时,尝试关闭系统代理设置(或者配置梯子不影响本地局域网),避免影响本地 TCP 连接。
简单说:
-
你开梯子时,系统代理被启用,
QTcpSocket
默认读取了代理设置。 -
你写的程序没设置代理,但
QTcpSocket
使用了“无效代理类型”,所以连接报错。 -
解决就是告诉 QTcpSocket 不用代理,即调用
client->setProxy(QNetworkProxy::NoProxy);
你可以在 connectToHost
之前调用这一句,应该能解决你的问题。