Qt中实现域(Unix)套接字通信

news/2025/3/14 17:54:24/

 

Qt中实现域(Unix)套接字通信可以使用QLocalServer和QLocalSocket类。以下是一个简单的示例,演示了如何在两个Qt应用程序之间使用域套接字进行通信。

一、在服务器端:

cpp
Copy code
#include <QtWidgets>
#include <QLocalServer>
#include <QLocalSocket>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QLocalServer server;
    if (!server.listen("myserver")) {
        qDebug() << "Error: " << server.errorString();
        return 1;
    }
    qDebug() << "Server listening...";

    QObject::connect(&server, &QLocalServer::newConnection, [&](){
        QLocalSocket *socket = server.nextPendingConnection();
        if (!socket) {
            return;
        }
        QObject::connect(socket, &QLocalSocket::readyRead, [&](){
            QByteArray data = socket->readAll();
            qDebug() << "Received: " << data;
            socket->write("Message received.");
        });
    });

    return app.exec();
}


二、 在客户端:

cpp
Copy code
#include <QtWidgets>
#include <QLocalSocket>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QLocalSocket socket;
    socket.connectToServer("myserver");
    if (!socket.waitForConnected()) {
        qDebug() << "Error: " << socket.errorString();
        return 1;
    }

    qDebug() << "Connected to server.";
    socket.write("Hello from client.");
    if (!socket.waitForBytesWritten()) {
        qDebug() << "Error writing to server: " << socket.errorString();
        return 1;
    }

    if (!socket.waitForReadyRead()) {
        qDebug() << "Error reading from server: " << socket.errorString();
        return 1;
    }

    QByteArray response = socket.readAll();
    qDebug() << "Server response: " << response;

    return app.exec();
}
这是一个简单的示例,说明了如何使用QLocalServer和QLocalSocket在Qt应用程序之间进行域套接字通信。在实际应用中,您可能需要更复杂的逻辑来处理连接、数据传输和错误处理


http://www.ppmy.cn/news/1405251.html

相关文章

Linux(centos7)部署spark

Spark部署模式主要有4种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、Spark On Yarn模式(使用YARN作为集群管理器)和Spark On Mesos模式(使用Mesos作为集群管理器)。 下面介绍Local模式(单机模式)、跟Spark On Yarn模式(使用YARN作为集…

OpenHarmony实战:轻量级系统之子系统移植概述

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开&#xff0c;支持根据实际需求裁剪某些非必要的部件&#xff0c;本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力&#xff0c;需要对相应子系统进行适配。 OpenHarmony芯片适配常见子系统列…

Git常用语句

设置用户名 git config --global user.name "用户名" git config --global user.email "邮箱"查看git用户信息 cat ~/.gitconfig初始化本地库 git initclone指定分支的代码 git clone -b my_branch gitgitlabxxxxxxxxxxxxxxxxxxxxxx.gitpush三件套 gi…

Golang- 邮件服务,发送邮件

依赖 go get -u github.com/jordan-wright/email文档 文档 示例代码 邮箱的相关配置 # email configuration email:port: 25 # 端口要配置25 否则可能出现EOF错误from: xxx1qq.comhost: smtp.qq.comis-ssl: truesecret: xxxxxnickname: 大锦余发送邮件代码 package utili…

合宙4G模块Air724UG调试过程(短信发送、上传数据到华为云IOT)

合宙Air724UG-4G模块AT指令调试接线演示 一、前言 上海合宙Air724UG模块是一款高性能的4G Cat.1通信模组(全网通模块,支持移动、联通、电信,支持短信和网络通信),为开发者提供了丰富的接口和开发方式。 在本文中,将详述调试与集成该模块的关键步骤: (1)从基础硬件配…

PyTorch深度学习——框架简介

深度学习的算法是高度结构化的&#xff0c;主要组成部分是线性变换、激活函数、反向传播和梯度优化等模块&#xff0c;实际应用中&#xff0c;为了方便算法的实现&#xff0c;常会将算法模型抽象成对张量的一系列计算&#xff0c;并将计算设计的一些算法抽象层应用程序接口API供…

dm8 开启归档模式

dm8 开启归档模式 1 命令行 [dmdbatest1 dm8]$ disql sysdba/Dameng123localhost:5237服务器[localhost:5237]:处于普通打开状态 登录使用时间 : 3.198(ms) disql V8 SQL> select name,status$,arch_mode from v$database;行号 NAME STATUS$ ARCH_MODE ----------…

数字化营销:电子元器件商城的新战略路径

数字化营销对于电子元器件商城来说是一种重要的新战略路径&#xff0c;可以通过以下方式实施&#xff1a; 建立网上商城平台&#xff1a;搭建一个用户友好的网上商城平台&#xff0c;提供方便快捷的在线购物体验。通过优化网站界面设计、提供多样化的搜索和筛选功能&#xff0c…