如何在使用 QLocalSocket 的 IPC 期间告诉客户端已经结束连接?
Posted
技术标签:
【中文标题】如何在使用 QLocalSocket 的 IPC 期间告诉客户端已经结束连接?【英文标题】:How to tell the client has end the connection during IPC using QLocalSocket? 【发布时间】:2016-06-06 17:31:45 【问题描述】:我有两个使用 QLocalSocket 和 QLocalServer 进行 IPC 的程序,我已成功实现连接并成功发送数据。
但是,对于 QLocalServer 端,我如何知道连接已被客户端终止(如客户端程序退出。)?
这样我就可以释放服务器端对应socket的资源了吗?
【问题讨论】:
从断开的套接字读取或通过断开的套接字发送数据会触发错误。 这样,我需要不断地读/写那个套接字。还有其他不需要的方法吗? 【参考方案1】:您可以将来自 QLocalHost 的 void QLocalSocket::disconnected()
信号连接到您班级中的插槽:
connect(mySocket, &QLocalSocket::disconnected, this, &MyClass::socketDisconnected, Qt::QueuedConnection);
或者您可以连接到 stateChange(更详细的版本),例如:
// Connect like this
connect(mySocket, &QLocalSocket::stateChanged, this, &MyClass::socketNewState, Qt::QueuedConnection);
// Implement a slot that handles the various states...
MyClass::socketNewState(QLocalSocket::LocalSocketState socketState)
qDebug() << "New state is " << socketState << endl;
【讨论】:
以上是关于如何在使用 QLocalSocket 的 IPC 期间告诉客户端已经结束连接?的主要内容,如果未能解决你的问题,请参考以下文章