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 官方文档上关于代理类型的说明:

Qt 无线局域网内 TCP 客户端连接失败

在不关闭代理的情况下进行如下设置也可以使 Qt client 进行正常连接。

// 将代理类型改为 NoProxy
tcpSocket->setProxy(QNetworkProxy::NoProxy);

参考链接:记录 QTcpSocket 碰到的 ConnectToHost 失败问题

上一篇:C语言实现电话本 动态开辟 信息存储于文件


下一篇:wireshark从入门到精通3