gpt4 book ai didi

c++ - 在两个 Qt exe 之间发送图像

转载 作者:行者123 更新时间:2023-11-28 02:37:39 27 4
gpt4 key购买 nike

我试图让我的应用程序能够在不保存图像的情况下相互发送图像。

我发现有多种方法可以实现该目标。包括:

QSharedMemory

QLocalServer

Q进程

我想使用 QSharedMemory,但我不知道如何将信号从一个发送到另一个以发出请求。下面的例子展示了如何使用QShareMemory但没有发送信号。

http://qt-project.org/doc/qt-4.8/ipc-sharedmemory.html

如果我选择起诉 QLocalServer,那意味着我必须通过网络(?)进行通信。我不知道这是否是个好主意,因为图像文件可能很大。

如果我选择使用QProcess,我不知道如何通过直接双击exe在两个应用程序之间建立连接。

有什么建议吗?非常感谢!

更新

我尝试使用 QLocalSocket 但我无法将图像发送到另一个应用程序,因为卡在 bytesAvailable() while 循环中。

QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_3);
if(client_status == 0)
{
out << m_message;
}
else if(client_status == 1)
{
out << m_image;
}
out.device()->seek(0);
m_socket->write(block);
m_socket->flush();

程序卡在这里。

while (clientConnection->bytesAvailable() < (int)dataSize)

我尝试设置 dataSize 的大小等于 block.size()不起作用。

最佳答案

I would like to use QSharedMemory

为什么会有这样的愿望?

如果应用程序在同一台机器上,那么我建议使用 QLocalServer。在功能上它可能看起来需要网络,因为概念类似于 QTcpSocket,但实际上不需要网络。正如 QLocalSocket 的文档所述

On Windows this is a named pipe and on Unix this is a local domain socket.

如果应用程序运行在不同的机器上,那么我建议使用QTcpServer,它具有与QLocalServer和QLocalSocket相似的功能接口(interface)。

QProcess不是这里的解决方案。虽然文档声明“QProcess 类用于启动外部程序并与它们通信”,但通信指的是控制应用程序、发送输入并接收其输出和错误流。

关于c++ - 在两个 Qt exe 之间发送图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971212/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com