1. 實驗來源
《Qt Creator快速入門 第三版》第18章 18.4 TCP 實驗,tcpserver 和 tcpclient。
2. 實驗配置
兩台主機 PC1 和 PC2 接入同一無線路由器。
PC1 和 PC2 均開了代理。
3. 測試
3.1 兩台主機之間使用 TCP 調試助手進行連接測試
PC1 和 PC2 分別使用 TCP 調試助手作為 server 和 client 進行連接,一切正常。
3.2 server 與 TCP 調試助手進行連接測試
PC1 或 PC2 下,Qt server 與 TCP 調試助手可以連接,也就是在本地可以連接。
PC1 下 Qt server 與 PC2 下 TCP 調試助手可以連接,互換位置一樣可以連接。
3.3 client 與 TCP 調試助手進行連接測試
PC1 或 PC2 下,Qt client 與 TCP 調試助手可以連接;也就是在本地可以連接。
PC1 下 Qt client 與 PC2 下 TCP 調試助手無法連接,互換位置同樣無法連接。
4. 問題討論
為什么 client 無法進行連接,而 TCP 調試助手卻可以?
因為 TCP 調試助手可以連接,最開始就排除了 PC 的問題而將目標鎖定在 client 代碼上,但代碼很簡單根本看不出問題。
最后還得感謝網友的記錄(詳見文末參考鏈接),將問題指向代理上。
關閉了 PC1 和 PC2 上的代理,Qt client 可以正常連接 TCP 調試助手和 Qt server。
Qt 官方文檔上關於代理類型的說明:

在不關閉代理的情況下進行如下設置也可以使 Qt client 進行正常連接。
// 將代理類型改為 NoProxy
tcpSocket->setProxy(QNetworkProxy::NoProxy);
