Datei verschicken -> Vorgehensweise

Verschiedenes zu Qt
Antworten
speed04
Beiträge: 39
Registriert: 7. November 2008 15:24

Datei verschicken -> Vorgehensweise

Beitrag von speed04 »

hallo,

wenn ich ein datenpaket versenden möchte, dann muss ich es doch zuerst mit QFile einlesen, dann mit QBuffer puffern um es dann in den QByteArray zu schreiben. ist dem so oder muss noch irgendwie nen zwischenschritt passieren?

thx
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

QFile kann auch diret ein QByteArray zurückgeben...
speed04
Beiträge: 39
Registriert: 7. November 2008 15:24

Beitrag von speed04 »

achso okay. das funktioniert ja gut.

so sieht mein codeschnipsel aus:

Code: Alles auswählen

void sender::dateiversand()
{
	QString pfad("c://projects//paket.rar");	
	QByteArray array;
	array = QFile::encodeName(pfad);

       QHostAddress ipv4;
	ipv4 = "192.168.1.2";	//Ziel-IP
	udpsocket -> writeDatagram(array, ipv4, 65001);
}
wenn ich nun mit wireshark den netzwerkverkehr aufzeichne, stelle ich fest, dass er überhaupt nichts rausschickt. bei udp müsste er es doch rausschicken, egal wer der empfänger ist.

oder fehlt noch etwas entscheidendes?

gleich mal noch ne frage im anschluss daran, hat schon mal jemand erfahrung mit dem dateiversand über Qt gemacht? speziell würde mich da die übertragungsgeschwindigkeit interessieren, also kann man seine bandbreite vom netzwerk voll ausschöpfen oder begrenzt Qt in irgendeiner hinsicht?

thx
Termy
Beiträge: 14
Registriert: 10. November 2008 21:37

Beitrag von Termy »

Also ich hab schon mit der QFtp Klasse gearbeitet und die nutzt die Netzwerkgeschwindigkeit voll aus, also kann man davon ausgehen, dass es die restlichen auch tun..

Zu deinem Problem:Probier mal statt ipv4 das hier zu nehmen:

Code: Alles auswählen

QHostAdress("192.168.1.2")
Greetz
speed04
Beiträge: 39
Registriert: 7. November 2008 15:24

Beitrag von speed04 »

mh okay danke für die information.

ich hatte noch nen fehler im connect befehl deswegen konnte ich das im wireshark nicht sehen. jetzt kann ich mein udp paket sehen.
aber ich glaube noch nicht genau zu wissen, wie man eine datei von zum beipiel 100mb größe überträgt. wenn ich das mit qdatastream versuche, dann versendet er immer nur den pfad. :-(
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

du ließt die Datei squenziell aus. sagen wir du überträgst pro paket 16kb. Dann ließt du aus der Datei diese 16kb aus, verschickst sie per Socket und liesst dann die nächsten 16kb aus. Bis QFile atEnd() zurückliefert. Natürlich solltest du in dem Datagram auch noch informationen mitliefern(aktuelle paketnummer, anzahl pakete, größe des pakets). Wegen der größe solltest du aber nochmal schauen. ich weiss nicht was optimal für ein udp datagram wäre.
Antworten