Datenübertragung mit Qt

Alles rund um die Programmierung mit Qt
Antworten
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Datenübertragung mit Qt

Beitrag von pfu »

Hallo zusammen!

Ich möchte eine Datenübertragung über Ethernet mit Qt realisieren. Ich arbeite im Projektunterricht an einem Datenerfassungssystem welches die Daten an die Ethernet - Schnittstelle(GIGA - LAN) an den Rechner sendet.

Meine Frage: Wie sieht es mit der Performance aus? wie schnell kann ich Daten über die Ethernet - Schnittstelle mit Qt erfassen?

Danke im Vorraus
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das kann man leider nicht pauschal beantworten, da es von einer Unzahl an Faktoren abhängt. OS,Netzwerkkarte,Firewall etc. Da währe es am sinnvollsten ein kleines Testprogramm zu schreiben, was die Daten empfängt, und nach /dev/null schickt.
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

Die Datenübertragung erfolgt nur zwischen 2 geräten. Ein FPGA-Board(Sender) und einem Notebook(Empfänger). es existiert keine Firewall. DAS OS ist LINUX oder Windows(ECHER LINUX). Könnten Sie mir ein testprogramm server - client schicken, nur wenn sie eines hätten ?
danke im vorraus
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Also Griffbereit habe ich hier nix. Aber in den Beispielen von Qt solle sich was finden lassen.
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Evtl. hilft dir das hier ja weiter. Sind zwar keine pro Dateien für qmake enthalten, aber sollte kein Problem sein die zu erzeugen. Testprogramm ist ebenfalls enthalten.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
pfu
Beiträge: 10
Registriert: 5. Dezember 2006 12:49

Beitrag von pfu »

vielen dank.

ich habe mir ausgerechnet, dass ich bei einer UDP Datenpaketgröße von 1024byte. auf eine Paketanzahl von ca. 20000 in der sekunde komme. Qt unter LINUX schaft nur ca 8000Pakete/s. Also werd ich über die programmierung eines eigenen sockets nicht hinwegkommen. hab noch nicht sehr viel in diese richtung getan. wie fange ich da am besten an.
danke im Vorraus
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

20000 Pakete / Sek * 1024 Byte / Paket = 20480000 Byte / Sek = 20000 kByte / Sek ~= 20 MB/s über Ethernet ? Das kann nicht klappen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es schrieb zwar mal was von (GIGA-LAN) und ich denke daß er damit Gigabit-Ethernet meint, aber selbst dann wird es knapp.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Nuja, das klingt ja auch nach 20000 hab ich mir ausgerechnet und im Test schaff ich nur 8000.

Wenn Qt unter LINUX nur ca 8000Pakete/s schafft, dann haengt das aber sicher auch von der Art des Tests ab.

@pfu
Wie genau definierst du bitte die "Ethernet - Schnittstelle" eines Rechners?

Goos
andiK
Beiträge: 27
Registriert: 23. September 2005 20:29
Wohnort: Bruchsal

Beitrag von andiK »

wie wär's denn, die UDP Paketgrösse zu maximieren? Das reduziert die Paketanzahl, header overhead und damit die notwendige Bandbreite und Prozessorleistung. Damit müsste man dem Ziel doch einiges näherkommen.

Falls das auch an Grenzen stösst, könnte man auch den Einsatz von IPv6 probieren, da gibt es doch sogenannte jumbo-packets mit payload sizes bis zu 65536 octets.

Gruesse,

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

Beitrag von upsala »

Man sollte eher eine Paketgröße verwenden, die nicht fragmentiert wird.
andiK
Beiträge: 27
Registriert: 23. September 2005 20:29
Wohnort: Bruchsal

Beitrag von andiK »

Das Thema Fragmentierung hat man immer im Griff, wenn man nur eine Datenübertragung von Node zu Node hat (Layer 2 transport). Man muss nur an beiden Nodes die richtigen Einstellungen machen.

Bei IPv6 gibt's übrigens eh' keine Fragmentierung bei den Routern im Netz sondern nur evtl. ne ICMP Fehlermeldung bei Überschreitung der MTU. Die MTU wird von der Datenquelle mit einer "Path MTU discovery" Prozedur direkt bestimmt.

Andi
Antworten