C++ 在两个Qt-exe之间发送图像
我试图使我的应用程序能够在不保存图像的情况下互相发送图像 我发现有几种方法可以实现这个目标。包括: QSharedMemory QLocalServer QProcess 我想使用QSharedMemory,但我不知道如何从一个发送信号到另一个发送请求。下面的示例演示如何使用QShareMomery但不使用发送信号 如果我选择起诉QLocalServer,这意味着我必须通过网络(?)进行通信。我不知道这是不是一个好主意,因为图像文件可能很大 如果我选择使用QProcess,我不知道如何在两个应用程序之间建立连接,如果它们是通过直接双击exe单独打开的 有什么建议吗?非常感谢 更新 我尝试使用QLocalSocket,但我无法将图像发送到另一个应用程序,因为bytesAvailable()while循环中出现了问题C++ 在两个Qt-exe之间发送图像,c++,qt,exe,C++,Qt,Exe,我试图使我的应用程序能够在不保存图像的情况下互相发送图像 我发现有几种方法可以实现这个目标。包括: QSharedMemory QLocalServer QProcess 我想使用QSharedMemory,但我不知道如何从一个发送信号到另一个发送请求。下面的示例演示如何使用QShareMomery但不使用发送信号 如果我选择起诉QLocalServer,这意味着我必须通过网络(?)进行通信。我不知道这是不是一个好主意,因为图像文件可能很大 如果我选择使用QProcess,我不知道如何在两个应
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实现了我的目标