之前尝试Qt的QTcpSocket,发现ConnectToHost失败,waitForConnected一直返回false,一直不得其解,放弃了。直到最近再次使用,仍然是返回false,下定决心要解决这个问题。
心血来潮查了QT的文档,发现有个Proxy,心里突然一激动,点开文档进去有个QNetworkProxy。
看文档发现代理种类很多,平时默认走DefaultProxy。于是打印了下自己的Socket代理类型。
m_sock.proxy().applicationProxy().type();
发现返回来的是QNetworkProxy::HttpProxy,突然懂得了什么。
我默默关掉了我的全局SSR,发现成功了。原来开了这玩意儿会走httpproxy。
如果想要在翻墙情况下连接,可以使用setProxy(QNetworkProxy::NoProxy)。
后续
时隔3年,博主再次踩到这个坑。不过此时却是在Qt6遇到。
Qt6的TCP在Connect的时候,此时若你处于翻墙状态,连接是直接成功的。但此时端到端的通信是不通的(报文无法正常收发)
,需要关闭翻墙,然后重新connect才能正常使用。
再次特地记录,让更多有志青年少走弯路。