Qt 無線區域網內 TCP 客戶端連線失敗
阿新 • • 發佈:2021-12-14
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);