Dateien versenden mit UdpSocket
Dateien versenden mit UdpSocket
Hallo,
habe hier im Forum schonmal das Thema gesehen, aber noch nicht die richtige lösung.
Ich möchte mittels QUdpSocket Dateien über das Netzwerk versenden.
Im Moment bin ich soweit, dass ich eine Nachricht vom Client zum Server schicken kann.
Nun muss ich aber eine Datei, z.B. ein Bild versenden.
Muss man das vorher in ein QByteArry umwandeln oder wie kann man das versenden?
habe hier im Forum schonmal das Thema gesehen, aber noch nicht die richtige lösung.
Ich möchte mittels QUdpSocket Dateien über das Netzwerk versenden.
Im Moment bin ich soweit, dass ich eine Nachricht vom Client zum Server schicken kann.
Nun muss ich aber eine Datei, z.B. ein Bild versenden.
Muss man das vorher in ein QByteArry umwandeln oder wie kann man das versenden?
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Indem man sich einfach mal mit der Doku befasst anstatt immer nur zu hoffen hier alles vorgekaut zu bekommen!gerd87 hat geschrieben:Kannst du mir auch sagen, wie man das bild in ein QByteArray konvertiert?
http://doc.trolltech.com/4.2/qfile-members.html
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Habe das jetzt soweit:
Senden:
Empfangen:
Komme da aber nicht weiter. Das Funktioniert so nicht.
Es kommt auf jeden Fall etwas an. Jetzt weiss ich aber nicht, ob es falsch gesendet oder beim empfang falsch interpretiert wurde.
Senden:
Code: Alles auswählen
udpSocketClient = new QUdpSocket(this);
QByteArray datagram;
QFile file("cam.bmp");
if (!file.open(QIODevice::ReadWrite))
{
QMessageBox::information( this, "NetChat - Info", QString("Nix opened"), "&Ok" );
return;
}
datagram = file.readAll();
udpSocketClient->writeDatagram(datagram.data(), datagram.size(), QHostAddress(lineEditServer->text()), 53000);
Code: Alles auswählen
udpSocketServer = new QUdpSocket( this );
udpSocketServer->bind(53000);
connect( udpSocketServer, SIGNAL( readyRead() ), this, SLOT( clientReceivedUdp() ) );
void MainForm::clientReceivedUdp( void )
{
QByteArray receivedText;
receivedText = udpSocketServer->readAll();
QImage image;
image.loadFromData (receivedText);
labelCam->setPixmap(QPixmap::fromImage(image));
}
Es kommt auf jeden Fall etwas an. Jetzt weiss ich aber nicht, ob es falsch gesendet oder beim empfang falsch interpretiert wurde.
Danke für den Tip.
Habe das bei beiden getestet. Das ergebnis ist so: gesendet wird immer etwas, empfangen wird nicht immer etwas. Wie es jetzt ist, wird nichts empfangen, d.h. die Funktion wird nicht aufgerufen.
Habe mal versucht, ein normalen Text zu versenden, das hat funktioniert.
Aber warum macht er denn ein Unterschied zwischen den beiden?
Bei beiden habe ich das mit QByteArray gesendet.
Habe das bei beiden getestet. Das ergebnis ist so: gesendet wird immer etwas, empfangen wird nicht immer etwas. Wie es jetzt ist, wird nichts empfangen, d.h. die Funktion wird nicht aufgerufen.
Habe mal versucht, ein normalen Text zu versenden, das hat funktioniert.
Aber warum macht er denn ein Unterschied zwischen den beiden?
Bei beiden habe ich das mit QByteArray gesendet.