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

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应用程序之间进行域套接字通信。在实际应用中,您可能需要更复杂的逻辑来处理连接、数据传输和错误处理

相关推荐
全栈陈序员8 分钟前
【Python】基础语法入门(二十四)——文件与目录操作进阶:安全、高效地处理本地数据
开发语言·人工智能·python·学习
是有头发的程序猿11 分钟前
Python爬虫实战:面向对象编程构建高可维护的1688商品数据采集系统
开发语言·爬虫·python
lkbhua莱克瓦2414 分钟前
多线程综合练习3
java·开发语言·多线程·githup
郝学胜-神的一滴24 分钟前
封装OpenGL的Shader相关类:从理论到实践
开发语言·c++·程序人生·游戏·图形渲染
想做后端的小C28 分钟前
Java:访问权限
java·开发语言
啃火龙果的兔子29 分钟前
java语言基础
java·开发语言·python
我命由我1234532 分钟前
Python 开发问题:No Python interpreter configured for the project
开发语言·后端·python·学习·pycharm·学习方法·python3.11
掘根35 分钟前
【消息队列项目】消费者管理模块实现
java·开发语言
lzhdim36 分钟前
C#应用程序取得当前目录和退出
开发语言·数据库·microsoft·c#
秋邱43 分钟前
Java基础语法核心:程序结构、注释规范、变量常量与数据类型
java·开发语言·spring cloud·tomcat·hibernate