Anzeige:
Ergebnis 1 bis 13 von 13

Thema: QSockets: Server und Client in einer Anwendung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567

    QSockets: Server und Client in einer Anwendung

    Ich weiß selber noch nicht so recht, ob das, was ich da vorhabe, so in der Form sinnvoll ist, aber ich erzähl erstmal, was ich vorhabe und stell dann einfach mal meine Frage dazu.

    Also, ich habe hier ein Entwicklungsboard (FGPA mit integriertem PowerPC) auf dem eine Anwendung läuft, die mir per Ethernet fleißig Controllinginformationen an einen Host schickt. Für den Host möchte ich eine Anwendung mit GUI entwickeln, die diese Informationen (asynchron) Empfangen kann (also ähnlich einem Server) und auf der anderen Seite selber aber auch Einstellungen, die über das GUI getätigt wurden, an das Board schicken kann (Client). Auf dem Board habe ich schon eine threadbasierte Anwendung geschrieben. Die Anwendung auf dem Host möchte ich mit Qt entwickeln, weil ich mir davon eine Systemunabhängigkeit und eine größere Funktionsbibliothek verspreche. Außerdem eben auch die GUI Funktionalität.

    Nun ist die Frage, wie das ganze mittels Qt zu realisieren ist. Die Sockets unter Qt sollen ja ereignisorientiert ablaufen (mittels Signals & Slots). Das würde ja prinzipiell bedeuten, dass es egal ist, ob meine Anwendung ein Client, Server oder beides gleichzeitig ist, weil auf das jeweilige Signal reagiert wird. Jetzt ist nur die Frage, so meine Annahmen stimmen, wie es da mit den Prioritäten vor sicht geht und wie gut man Server und Client voneinander Trennen kann. Bei threadbasierten Programmen würde ich je für den Client und den Server einen eigenen Socketthread erstellen, so dass der eine Thread immer schön lauscht und die Daten empfängt und der andere Socket bei Bedarf die neue Konfiguration an das Board schickt. Wie würde man sowas am sinnvollsten in Qt realisieren?
    C und C++

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Du benötigst bei Qt beides, also Server und Klient.
    Der Server wird an deinen Port gebunden und sendet via Signal an den Socket Klient in dem Fall ein QTextEdit etc.
    Sehe dir bei den examples die fortuneclient und fortuneserver Beispiele an.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Zitat Zitat von undefined Beitrag anzeigen
    Du benötigst bei Qt beides, also Server und Klient.
    Der Server wird an deinen Port gebunden und sendet via Signal an den Socket Klient in dem Fall ein QTextEdit etc.
    Sehe dir bei den examples die fortuneclient und fortuneserver Beispiele an.
    Danke für deine Antwort, aber ich glaub, dass du mich da ein bisschen missverstanden hast ;-) Dass ich beides brauche, ist mir bewusst. Es geht jetzt nur darum, wie ich das am sinnvollsten implementieren kann? Muss/kann ich für beide Sockets einen eigenen Thread erstellen oder erlaubt das ereignisgesteuerte Verhalten der QSockets Server- und Client-Code direkt in einem Thread/Prozess laufen zu lassen?
    C und C++

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du kannst beliebige viele Sockets pro Eventloop benutzen, die Frage ist mehr wie lange die jeweiligen Verarbeitungsschritte brauchen und ob das eventuell mit extern benötigtem Timing interferiert.

    Wenn du nicht auf die selben Slots verbindest, sind die Sockets eoweit unabhängig wie du möchtest, d.h. du kannst natürlich leicht auf gemeinsame Daten zugreifen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer Avatar von Berufspenner
    Registriert seit
    30.03.2002
    Ort
    Hamburg
    Beiträge
    567
    Ok, heißt also im Umkehrschluss, dass ich einen Client und einen Server Socket gleichzeitig in einem Thread laufen lassen kann. Was aber, wenn beide Sockets gleichzeitig arbeiten sollen, also der eine gerade Daten empfängt wenn der andere Daten senden soll? Werden eingehende Daten automatisch gepuffert, bis alle Daten gesendet wurden?
    C und C++

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ja genau.

    Wenn einer der Sockets signallisiert, dass er jetzt bereit für lesen/schreiben ist, wird der entsprechende Qt Code ausgeführt.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •