Hallo,
Folgendes, ich schreibe gerade ein Serverprogramm in QT und bin mir bei etwas nicht sicher:
Der Client stellt eine Verbindung und ein neuer Socket wird erstellt. Wenn nun der Client eine Anfrage stellt ( das readyRead Signal wird gesendet ), wird der Pointer auf das Socket an einen Thread in einem QThreadPool übergeben. Nun beginnt der Thread auf das Socket zuzugreiffen und die ankommenden Daten auszuwerten ( es kann vorkommen dass mehrere Anfragen im Buffer sind also lasse ich das ganze in einer while-Schleife laufen, um alle Daten auszuwerten ). Da das ganze in einem anderen Thread abläuft muss ich das Socket mit QMutex locken. Jetzt kann es aber sein, dass der Server unabhängig von der Anfrage Daten an den Client senden muss. Das machter, indem er ein Signal ( QueuedConnection ) mit dem zu sendenden QByteArray an das Socket schickt. Was passiert mit dem Signal, wenn das Socket aber gerade gelockt ist ?
Mfg
Folgendes, ich schreibe gerade ein Serverprogramm in QT und bin mir bei etwas nicht sicher:
Der Client stellt eine Verbindung und ein neuer Socket wird erstellt. Wenn nun der Client eine Anfrage stellt ( das readyRead Signal wird gesendet ), wird der Pointer auf das Socket an einen Thread in einem QThreadPool übergeben. Nun beginnt der Thread auf das Socket zuzugreiffen und die ankommenden Daten auszuwerten ( es kann vorkommen dass mehrere Anfragen im Buffer sind also lasse ich das ganze in einer while-Schleife laufen, um alle Daten auszuwerten ). Da das ganze in einem anderen Thread abläuft muss ich das Socket mit QMutex locken. Jetzt kann es aber sein, dass der Server unabhängig von der Anfrage Daten an den Client senden muss. Das machter, indem er ein Signal ( QueuedConnection ) mit dem zu sendenden QByteArray an das Socket schickt. Was passiert mit dem Signal, wenn das Socket aber gerade gelockt ist ?
Mfg