Qt 無線局域網內 TCP 客戶端連接失敗


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 官方文檔上關於代理類型的說明:

image

在不關閉代理的情況下進行如下設置也可以使 Qt client 進行正常連接。

// 將代理類型改為 NoProxy
tcpSocket->setProxy(QNetworkProxy::NoProxy);

參考鏈接:記錄 QTcpSocket 碰到的 ConnectToHost 失敗問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM