Qt - QTcpSocekt无法检测连接丢失
Qt - QTcpSocekt cannot detect connection lost
尝试读取断开连接前传输的所有数据:
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的事件循环执行任何处理,这是不推荐的。您可以在while
循环中手动调用QCoreApplication::processEvents()
,这可能会允许套接字的状态进展,但这会产生您可能意想不到的副作用(例如您的应用程序处理可能与其他类上的事件处理程序和信号相关的其他事件)。
建议创建一个插槽来处理从套接字读取的数据(连接到套接字的readyRead()
信号),另一个插槽来处理套接字状态的变化(连接到套接字的stateChanged()
信号)。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 检测grpc服务器中关闭的客户端连接
- 提升 ASIO 服务器 - 检测空闲连接
- 如何在 Grpc 中使用双向流时检测(物理)断开连接
- 如何在 boost asio 中检测套接字上的关闭连接,而无需阻塞调用
- 在写入过程中立即使用boost::asio检测关闭的TCP连接
- Poco::Net HTTPServer:如何检测断开连接的客户端?
- 如何在非网关接口 Linux 上检测互联网连接
- 如果另一侧失去了他的净连接,我该如何从客户端/服务器端检测
- 如何在我的程序中检测GPS设备连接到的端口(C / C)
- 使用QNetworkAccessManager检测网络摄像机连接
- 如何检测用户何时与网络断开连接
- ASIO-检测死连接
- 如何在 Thrift 中检测服务器断开连接
- 如何检测程序运行时 Kinect 何时断开连接/拔出
- 如何检测ssh连接(通过QProcess)何时完成
- Arduino 以太网扩展板无法检测到断开连接
- 正在检测网络连接
- 如何在C++中检测我的局域网连接是否断开
- QtNetwork:为什么我检测不到传入的连接?(incomingConnection() 永远不会被触发)