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";
}
复制代码

 

posted @   TechNomad  阅读(893)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示