qt netzwerk performance

Alles rund um die Programmierung mit Qt
Antworten
criss
Beiträge: 2
Registriert: 18. Juli 2006 08:54

qt netzwerk performance

Beitrag von criss »

hallo an alle,

ich benutze qt 4.1.x mit vs7.1 (2003er version) auf winxp.

folgendes hab ich gecoded: ein (qtcp)server und clients über qtcpsocket. beide sind gui anwendungen (wegen einfacher anzeige von daten :). die server-seite "empfängt" clients, hält on-/offline status aller clients (ok, momentan nur 2), schickt die daten des einen clients (sagen wir mal generator-client) zum anderen client (verbraucher-client). je client/server verbindung mache ich nur ein qtcpsocket mit readwrite zugriff auf. über einen start-befehl veranlasse ich das generator-client ein paar werte zu generieren, bis vom server ein stop-befehl gesendet wird.

momentan sendet der generator alle 5ms 3 double werte an den server und dieser weiter an den verbraucher. wenn ich das alles auf nur einem rechner laufen lasse, dann funktioniert alles ganz gut. alle daten werden schnell empfangen.

benutze ich aber z.b. 2 pc's (verbunden über einen 100mbit hub/switch, nicht weiteres), wobei ich die server/clients in verschiedenen kombinationen auf den pc's getestet habe, dann werden irgendwie nur 5-7 (ca alle 20ms) nachrichten vom server empfangen. der rest geht verloren.

was mache ich oder qt (hab auch einige post zu qt's performance problemen gelesen) oder windows falsch? ich brauche schon alle informationen, die mein generator-client generiert. würde die übertragung vielleicht mit udp paketen schneller gehen? sollte ich mehrere socket-verbindungen aufbauen (eine für nur lesen, eine für nur schreiben)? sollte ich vielleicht ein anderes netz paket (winsock, raknet, ...) benutzen als qnetwork?

kann mir jemand rat geben?

grüße,

criss
Emperor_L0ser
Beiträge: 51
Registriert: 28. Juli 2005 12:26
Kontaktdaten:

Beitrag von Emperor_L0ser »

versuche es in dem du nach jedem senden-auftrag ein flush() machst, damit wirklich gesendet wird und nicht eventuell mehrere pakete zu einem zusammengefasst werden, du aber nur den ersten teil richtig ausliest.

auf udp umsteigen würde ich dir nicht empfehlen, wenn du wirklich ALLE daten brauchst, da udp sich nicht um das nachsenden verlorener daten kümmert, tcp aber schon.
criss
Beiträge: 2
Registriert: 18. Juli 2006 08:54

Beitrag von criss »

hm... alles ge-flush()-t, aber keine änderung. ich meine, es funktioniert ja lokal wunderbar mit und ohne flush().

was ich vergessen habe: ich benutze einen qdatastream zum daten lesen bzw schreiben. kann das vielleicht ausbremsen wenn ich über einen hub/switch daten schicke?
Antworten