[gelöst] QImage über QTcpSocket verschicken
Verfasst: 26. Mai 2009 11:07
Hallo miteinander!
Mein Ziel ist es ein QImage von einer Serverapllikation an alle verbundenen Clients zu schicken (für den Anfang reicht auch erstmal an einen Client). Die Kommunikation mit QStrings hat bisher erfolgreich geklappt. Falls es wichtig ist, ich verwende QT 4.4.3 unter Vista.
Hier mein wesenlticher Code dazu:
Der Code auf der Serverseite
Der Code auf der Clientseite (zwei leider erfolglose Möglichkeiten):
Das Ergbniss ist, dass auf der Serverseite das QImage noch korrekt ist (ich kann es erfolgreich abspeichern) auf der Clientseite hingegen gelange ich zwar in den Slot slotReciveMessage(), aber das QImage ist und bleibt immer null.
Hat jemand eine Idee was ich ausprobieren könnte oder wie ich die Ursache des Problems finden könnte?
Bin für jeden Tipp dankbar!
Grüße Rumbert
Mein Ziel ist es ein QImage von einer Serverapllikation an alle verbundenen Clients zu schicken (für den Anfang reicht auch erstmal an einen Client). Die Kommunikation mit QStrings hat bisher erfolgreich geklappt. Falls es wichtig ist, ich verwende QT 4.4.3 unter Vista.
Hier mein wesenlticher Code dazu:
Der Code auf der Serverseite
Code: Alles auswählen
void VideoServer::slotSendMessage(const QImage& image)
{
// send a Message to all connected clients
for (int i = 0; i < connectedSockets.count(); ++i)
{
QDataStream stream(connectedSockets[i]);
stream << image;
// stream << (QVariant) image; // brachte auch kein Erfolg
QString saveName;
int number = 200;
saveName = QString("F:/Workcells_VERSOSIM/CamPics/test%1.jpg").arg(number,0,10);
bool result = image.save(saveName);
}
}
Code: Alles auswählen
void VideoClient::con()
{
number = 0;
connectToServer("127.0.0.1", 5554);
if (isConnected())
{
connect(&socket, SIGNAL(readyRead()),
this, SLOT(slotReciveMessage()));
}
}
void VideoClient::slotReciveMessage()
{
QVariant variant;
QImage image;
QImage image2;
QDataStream stream(&socket);
while (!stream.atEnd())
{
stream >> image;
stream >> value;
}
QImage image2 = variant.value<QImage>();
QString saveName;
number++;
saveName = QString("F:/Workcells_VERSOSIM/CamPics/test%1.jpg").arg(number,0,10);
bool result = image.save(saveName);
}
Hat jemand eine Idee was ich ausprobieren könnte oder wie ich die Ursache des Problems finden könnte?
Bin für jeden Tipp dankbar!
Grüße Rumbert