Я пытаюсь сделать мои приложения способными отправлять изображения друг другу, не сохраняя их.Отправка изображения между двумя Qt exe
Я нашел, что есть несколько способов достижения цели. В том числе:
QSharedMemory
QLocalServer
QProcess
Я хотел бы использовать QSharedMemory, но я не знаю, как передать сигнал от одного к другому, чтобы сделать запрос. В следующем примере показано, как использовать QShareMemory, но не передавать сигнал.
http://qt-project.org/doc/qt-4.8/ipc-sharedmemory.html
Если я выбираю судиться QLocalServer, это означает, что я должен общаться через сеть (?). Я не знаю, является ли это хорошей идеей или нет, потому что файлы изображений могут быть огромными.
Если я предпочитаю использовать QProcess, я не знаю, как установить соединение между двумя приложениями, если они открыты отдельно, дважды дважды нажмите на exe.
Любые предложения? Огромное спасибо!
Update
Я пытаюсь использовать QLocalSocket, но я застрял отправка изображения в другое приложение причины застрял в bytesAvailable() во время цикла.
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()
не работает.
Спасибо! Но кто будет сервером? Если сервер не открыт, могу ли я попросить Qt открыть его для меня? – KKyang
Либо может быть сервер. Это зависит от вашего дизайна. Обратите внимание, что вы можете получить путь к файлу с QLocalServer :: fullServerName и проверить наличие его с помощью QFileInfo :: exists. – TheDarkKnight
Спасибо, что подарили мне замечательные идеи. Я достигаю своей цели, используя QSharedMemory + QLocalSocket – KKyang