[gelöst] Welche der Varianten zum Senden von Daten über TCPS
Verfasst: 9. Juni 2009 12:10
Hallo miteinander,
nach meinem Post: "Zuviel Daten für QTcpSocket?" bin ich nun total verwirrt und wollte einmal grundsätzlich Nachfragen, was nun richtig ist, um Daten über einen TCPSocket zu schicken. Mit Hilfe des Forums, des Internets und Literatur bin ich auf zahlreiche Lösungsansätze gestoßen, von denen ich nun nicht weiß, welche überhaupt nicht gehen können und welche wo ihre Vor- und Nachteile haben. Hier nun meine fünf Varianten zum übertragen der Bildgröße und des QImages.
Über Erklärungen, Kommentare und Hinweise zu den Codebeispielen wäre ich sehr Dankbar!
Alternativ Beispiele sind auch sehr Willkommen
Grüße Rumbert
nach meinem Post: "Zuviel Daten für QTcpSocket?" bin ich nun total verwirrt und wollte einmal grundsätzlich Nachfragen, was nun richtig ist, um Daten über einen TCPSocket zu schicken. Mit Hilfe des Forums, des Internets und Literatur bin ich auf zahlreiche Lösungsansätze gestoßen, von denen ich nun nicht weiß, welche überhaupt nicht gehen können und welche wo ihre Vor- und Nachteile haben. Hier nun meine fünf Varianten zum übertragen der Bildgröße und des QImages.
Code: Alles auswählen
// ### 1 ###
void VideoServer::slotSendMessage(const QImage& image)
{
QByteArray baImage;
QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG");
QDataStream directOut(connectedSockets[1]);
// Übertragen der Bildgröße
directOut << (quint16)baImage.size();
// übertragen des Bildes
connectedSockets[1]->write(baImage);
}
// ### 2 ###
void VideoServer::slotSendMessage(const QImage& image)
{
QByteArray baImage;
QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG");
QDataStream directOut(connectedSockets[1]);
// Übertragen der Bildgröße
directOut << (quint16)baImage.size();
// übertragen des Bildes
directOut << baImage;
}
// ### 3 ###
void VideoServer::slotSendMessage(const QImage& image)
{
QByteArray baImage;
QByteArray block;
QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG");
QDataStream directOut(connectedSockets[1]);
// Übertragen der Bildgröße
directOut << (quint16)baImage.size();
// übertragen des Bildes
QDataStream out(&block, QIODevice::WriteOnly);
out << baImage;
}
// ### 4 ###
void VideoServer::slotSendMessage(const QImage& image)
{
QByteArray baImage;
QByteArray block;
QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG");
QDataStream out(&block, QIODevice::WriteOnly);
// Übertragen der Bildgröße
out << (quint16)baImage.size();
// übertragen des Bildes
out << baImage;
connectedSockets[1]->write(block);
}
// ### 5 ###
void VideoServer::slotSendMessage(const QImage& image)
{
QByteArray baImage;
QByteArray block;
QBuffer buffer(&baImage);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "JPG");
QDataStream directOut(connectedSockets[1]);
// Übertragen der Bildgröße
directOut << (quint16)baImage.size();
// übertragen des Bildes
QDataStream out(&block, QIODevice::WriteOnly);
out << baImage;
connectedSockets[1]->write(block);
}
Alternativ Beispiele sind auch sehr Willkommen
Grüße Rumbert