Qt Http和Socket

为什么http和socket设置同样的代理,http成功了,而socket每次连接都超时?

有可能是因为socket不支持代理,或者代理设置不正确导致的。请确认socket的代理设置是否与http的代理设置相同,是否正确配置代理。下面是一个示例,说明如何在Qt中设置HTTP和socket代理。

HTTP代理:可以使用QNetworkAccessManager类。如下所示:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::HttpProxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(8080);
manager->setProxy(proxy);

Socket代理:可以使用QTcpSocket类。如下所示:

QTcpSocket *socket = new QTcpSocket(this);
QNetworkProxy proxy;
proxy.setType(QNetworkProxy::Socks5Proxy);
proxy.setHostName("proxy.example.com");
proxy.setPort(1080);
socket->setProxy(proxy);

如果在HTTP请求中设置代理成功,但在socket请求中失败,可能是因为代理需要用户名和密码,但这些信息没有设置到代理设置中。