QTcpSocket没有建立连接却触发了connected信号

当在同一体系结构的服务器和客户端上,connectToHost()可能导致在连接localhost时直接触发connected信号。为确保连接成功后再触发信号,建议在调用connectToHost()后使用waitForConnected(),但需注意该函数会阻塞线程,不应在主线程中使用,以免造成程序停滞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

This signal is emitted after connectToHost() has been called and a connection has been successfully established.
Note: On some operating systems the connected() signal may be directly emitted from the connectToHost() call for connections to the localhost.
查看文档发现了官网的函数注解是这样的。
此信号是在调用connectToHost()并成功建立连接后发出的。注意:在某些操作系统上,connected()信号可能直接从connectToHost()调用发出,用于连接到localhost。因为我的服务器和客户端都在同一台电脑上,所以导致了,socket在调用了connectToHost()函数后就触发了connected信号。为了解决在本机测试会出现这样的问题,我们需要在调用connectToHost()函数后,再调用一下waitForConnected();函数,这样connected信号就会在成功连接后才发送信号。
补充一点,不要在主线程中使用waitForConnected()函数,因为这个函数会阻塞线程,如果一直连不上就会一直阻塞,放在主线程可能会导致程序一直处于阻塞状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值