Qt之进程间通信(本地套接字)
一、QLocalServer
QLocalServer是Qt框架中的一个类,用于创建本地套接字服务器。它可以用于在同一台计算机上的进程之间进行通信,而无需通过网络。
下面是使用QLocalServer的源码:
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { //创建QLocalServer对象 m_local_server = new QLocalServer(this); //连接QLocalServer的newConnection()信号到一个槽函数,以处理新连接 connect(m_local_server, &QLocalServer::newConnection, this, &MainWindow::on_new_connected); //设置服务器名字 m_local_server->listen("monitor_server"); } //在槽函数中,接受新的连接并处理数据 void MainWindow::on_new_connected() { QLocalSocket *local_client = m_local_server->nextPendingConnection(); connect(local_client, &QLocalSocket::readyRead, this, &MainWindow::on_socket_readyRead); } void MainWindow::on_socket_readyRead() { QLocalSocket *clientSocket = nullptr; clientSocket = qobject_cast<QLocalSocket*>(sender()); if (clientSocket) { // 处理接收到的数据 QByteArray data = clientSocket->readAll(); qDebug() << data; } }
二、QLocalSocket
QLocalSocket是Qt框架中的一个类,用于与QLocalServer建立本地套接字连接,并进行通信。
下面是使用QLocalSocket的源码:
MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { //创建QLocalSocket对象 m_local_client = new QLocalSocket(this); connect(m_local_client, &QLocalSocket::connected, this, &MainWindow::on_socket_connected); connect(m_local_client, &QLocalSocket::disconnected, this, &MainWindow::on_socket_disconnected); //连接到QLocalServer(monitor_server是server的名称) m_local_client->connectToServer("monitor_server"); } void MainWindow::on_socket_connected() { qDebug() << "local server socket connected"; // 连接成功,可以发送数据 m_local_client->write(QString("Hello Server").toLatin1()); m_local_client->flush(); } void MainWindow::on_socket_disconnected() { qDebug() << "local server socket disconnected"; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?