gpt4 book ai didi

c++ - Qt - QTcpSocekt 无法检测连接丢失

转载 作者:行者123 更新时间:2023-11-30 02:54:38 27 4
gpt4 key购买 nike

尝试读取断开连接前传输的所有数据:

while( socket->state() == QTcpSocket::ConnectedState )
if ( socket->bytesAvailable() > 0 )
qDebug("Read from client: %s", QString(socket->readAll()).toStdString().c_str());

但是当我从另一端断开连接时,socket->stated() 似乎仍然是 QTcpSocket::ConnectedState,我如何检测套接字已断开连接从另一端?

附言:
我必须使用信号/插槽机制吗?是否可以避免信号/槽机制?

最佳答案

这种类型的 while 循环完全阻止了 Qt 的 event loop从执行任何处理,这是不推荐的。您可以手动调用电话 QCoreApplication::processEvents()while 循环中,这可能会允许您的套接字状态继续进行,但这会产生您可能没有预料到的副作用(例如您的应用程序处理可能与事件处理程序和信号关联的其他事件其他类)。

建议您创建一个槽来处理从套接字(连接到套接字的 readyRead() 信号)读取的数据,并创建另一个槽来处理套接字状态的变化(连接到套接字的 stateChanged() 信号)。

关于c++ - Qt - QTcpSocekt 无法检测连接丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com