Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在两个Qt-exe之间发送图像_C++_Qt_Exe - Fatal编程技术网

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

C++ 在两个Qt-exe之间发送图像,c++,qt,exe,C++,Qt,Exe,我试图使我的应用程序能够在不保存图像的情况下互相发送图像 我发现有几种方法可以实现这个目标。包括: QSharedMemory QLocalServer QProcess 我想使用QSharedMemory,但我不知道如何从一个发送信号到另一个发送请求。下面的示例演示如何使用QShareMomery但不使用发送信号 如果我选择起诉QLocalServer,这意味着我必须通过网络(?)进行通信。我不知道这是不是一个好主意,因为图像文件可能很大 如果我选择使用QProcess,我不知道如何在两个应

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

我发现有几种方法可以实现这个目标。包括:

QSharedMemory

QLocalServer

QProcess

我想使用QSharedMemory,但我不知道如何从一个发送信号到另一个发送请求。下面的示例演示如何使用QShareMomery但不使用发送信号

如果我选择起诉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();
QByteArray块;
QDataStream out(块和QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_5_3);
如果(客户端状态==0)
{
外写(块);
m_插座->齐平();
程序在这里死机了

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

我试图将
dataSize
的大小设置为
block.size()
不起作用

我想使用QSharedMemory

你为什么有这样的愿望

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

在Windows上这是一个命名管道,在Unix上这是一个本地域套接字

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


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

谢谢!但谁将是服务器?如果服务器未打开,我可以请求Qt为我打开它吗?也可以是服务器。这取决于您的设计。请注意,您可以使用QLocalServer::fullServe获取文件的路径rName并使用QFileInfo::exists检查它的存在性。感谢您给了我精彩的想法。我通过使用QSharedMemory+QLocalSocket实现了我的目标