Ich möchte mittels eines Servers unidirektional Daten an mehrere Clients verschicken.
Dabei stellt der Server (abgeleitet von QTcpServer) einen Stream zur Verfügung.
Bei einkommenden Verbindungen (Client verbindet sich) liefert der Server auf den entsprechenden QTcpSockets diese Daten.
Das ganze funktioniert soweit wunderbar, aber die Latenzzeit ist mir zu hoch.
Ich bräuchte diese Daten möglichst ohne Zeitverlust (die Pakete sind klein, ca 100 Bytes) und das ganze soll auch nur im Intranet funktionieren.
Ein Client, der WinSockets verwendet habe ich auch schon geschrieben, dort treten keine nennenswerten Verzögerungen auf.
Ich würde den Client aber auch gern in Qt schreiben.
Die Verzögerungen, die ich erhalte bewegen sich im Bereich von 2 bis 10 Sekunden, ich hätte gerne Verzögerungen < 1/4 Sekunden.
Kann man das überhaupt garantieren?
Ich habe setReadBufferSize() im QTcpSocket des Clients auf 2*Paketgröße gesetzt, aber die Daten sind trotzdem noch verzögert.
Weiß jemand wie man da vorgehen sollte?
vielen Dank,
Stefan K. >8^)
Latenz von QTcpSockets (Qt4)
Re: Latenz von QTcpSockets (Qt4)
ca 100 Bytes....caetydid hat geschrieben: Die Verzögerungen, die ich erhalte bewegen sich im Bereich von 2 bis 10 Sekunden, ich hätte gerne Verzögerungen < 1/4 Sekunden.
Kann man das überhaupt garantieren?
Stefan K. >8^)
unter eine sekunden .... unidirektional LDAP... oder libcurl
..... bidirektional Webdav (auch libcurl)
alles auf port 80 ... keine firewall probleme..
etwas schnelleres ist spekulation.... oder zu aufwendig...
gelöst....
Also, vielen Dank für die Antworten, aber das Problem war wohl ein anderes:
Ich habe jedes Mal wenn der QTcpSocket neue Daten reinbekam insgesamt sechs QLineEdits mit Werten aktualisiert.
Offenbar wird mit setText() die Änderung sofort (auch visuell) aktiv, und nicht wie ich dachte, erst nach gewisser Zeit ein PaintEvent ausgelöst.
Zumindest waren diese ca. 600 LineEdits pro Sekunde wohl zu viel und haben diese Latenz verursacht!
Habe jetzt einen QTimer benutzt, um die UI nur alle 100ms zu aktualisieren, und die Verzögerungen sind nicht mehr nennenswert.
Ich habe jedes Mal wenn der QTcpSocket neue Daten reinbekam insgesamt sechs QLineEdits mit Werten aktualisiert.
Offenbar wird mit setText() die Änderung sofort (auch visuell) aktiv, und nicht wie ich dachte, erst nach gewisser Zeit ein PaintEvent ausgelöst.
Zumindest waren diese ca. 600 LineEdits pro Sekunde wohl zu viel und haben diese Latenz verursacht!
Habe jetzt einen QTimer benutzt, um die UI nur alle 100ms zu aktualisieren, und die Verzögerungen sind nicht mehr nennenswert.