Daten zwischen Fenstern austauschen?

Thomasio

Erfahrenes Mitglied
Ich habe nicht wirklich vor aus dem hier eine echte Anwendung zu machen, ich probiere nur ein wenig herum, mit dem Ziel zu lernen wie es funktioniert
Mein Testprojekt ist ein Versuch eine Anwendung in C++ mit einem Server kommunizieren zu lassen, der kein echter Server ist, sondern nur ein standard webspace mit php/mysql
Dank wininet hat das ganze zu Anfang seht gut funktioniert und ich habe immerhin einen funktionierenden chat-server auf die Beine gestellt, auch wenn ich das sicherlich sehr unprofessionell angestellt habe, wie gesagt, dient nur zum lernen und keinem echten Zweck

Aber jetzt will ich meinen windigen Server noch erweitern, und das reicht höher hinaus als meine Kenntnisse

Mit allen Funktionen die ich nach und nach eingebaut habe, user-online-liste, umsetzen von text in smileys, usw, wird das Ganze inzwischen heftig gross, spätestens als mein Editor beim scrollen zu stottern angefangen hat dachte ich mir, ich könnte statt immer mehr Funktionen im gleichen script, meinen code besser auf mehrere scripts verteilen, schon wegen der Übersicht, aber dazu müsste ich wissen, wie meine Fenster untereinander Daten austauschen können
Wenn meine WinMain per wininet die neuesten Daten vom Server abruft, dann müssen diese auf die einzelnen Fenster verteilt werden, sprich mein chat Fenster muss auf dem Umweg über text2smileys neuen Text reinscrollen, user-online-liste muss upgedated werden usw
Wenn der User eine Nachricht eintippt, dann muss diese an WinMain übertragen werden, damit sie bei der nächsten Verbindung zum Server gesendet wird usw
Solange ich das Ganze alles in einer einzigen Anwendung hatte ging das, auch wenn es seine Zeit gedauert hat, bis ich Anfänger das ohne 100 globals geschafft habe

Meiner erster Versuch das Ganze auf mehrere Scripts aufzuteilen benutzt jetzt mehrere Dateien auf der Platte, die vom Hauptfenster geschrieben und von den Unterprogrammen gelesen werden, aber auch wenn es funktioniert, das kanns nun irgendwie nicht sein
Im Prinzip sind die Dateien auf der Platte nichts anderes als eine Sammlung von super-globals und nachdem ich schon so viel Zeit darauf verwendet habe im single-file-script keine globals zu verwenden, hatte ich irgendwie nicht vor damit jetzt anzufangen, mal abgesehen davon, dass ich wirklich nicht einsehe, warum meine Platte alle 2 Sekunden die gleichen Dateien schreiben und lesen soll, nur damit meine Unterprogramme an die Daten kommen
Eine andere Möglichkeit wäre, wenn jedes Unterprogramm separat seine Daten vom Server abruft, aber dann belaste ich den Server um ein Vielfaches und das muss auch nicht sein

Aber wie tauscht man Daten zwischen 2 Anwendungen aus?
Hat jemand einen link zu einem passenden Tutorial, oder sonst einen Tip?
 
Also wenn ich das so einigermaßen richtig verstanden habe ist dein eigentliches Problem nicht der Datenaustausch mehrer Programme untereinander (was man übrigens z.B. über Pipes, Sockets oder Umgebungsvariablen machen kann -> einfach mal zu dieses Stichpunkten googlen), sondern eher die Performance deines Servers, der mehrere Dinge gleichzeitig machen soll.

Und bei mehreren Dingen gleichzeitig fällt einem sofort etwas ein: Threads

Sie dich doch mal bei google bezügl. Multithreading in C/C++ um, besonders zum Thema Serverprogrammierung gibt es da jede Menge Beispiele.
 
Nun, das Problem liegt nur indirekt in der Serverbelastung
Ich will die Belastung des Servers dadurch reduzieren, dass es in meiner Anwendung nur einen einzigen thread gibt, der zum server verbindet und Daten rauf und runter läd, aber das hatte ich in meiner 1-file Anwendung schon gelöst
Mein Problem ist, dass ich die Anwendung jetzt gerne auf mehrere files verteilen möchte und dabei für mich völliges Neuland betrete, weil ich nicht weiss, wie ich zwischen den einzelnen Teilen Daten austauschen kann, was aber notwendig ist, wenn ich das Prinzip von nur einer Verbindung zum Server beibehalten will
 
mmh - leider ist das etwas unklar:
Was heißt du willst den Code auf "mehrere Files verteilen" ?
- heisst das du willst mehrere Quelldateien haben ? (das sind Grundlagen der Programmierung, header und C++ dateien etc.)
- oder willst du mehrere unabhängige Programme haben die verschiedene Aufgaben erledigen ? (d.h. du startest mehrere Prozesse - dann musst du dich um Interprozesskommunikation kümmern - wie gesagt: das wird über o.g. Techniken gemacht)

-> in deinem Fall rate ich dir aber für jede Aufgabe einen Thread zu starten der die entsprechende Funktion hat (der Server an sich ist dann einer dieser Threads), dann hast du keine Interprozesskommunikation (die nicht einfach ist), den die einzelnen Threads können auf gemeinsame Variablen und Funktionen zugreifen.
 
Wie schon gesagt, das Ganze dient mir nur zum lernen, ob es in diesem speziellen Fall Sinn macht lassen wir mal dahin gestellt
Ich bitte um Vergebung, wenn ich Anfänger nicht mal die gängigen Fachbegriffe kenne und file statt prozess verwende

Ich habe tatsächlich vor, mehrere Prozesse zu starten und diese miteinander kommunizieren zu lassen, bzw. zu lernen, wie das geht, ob das nun einfach ist oder nicht, ich mag schwere Aufgaben, nachdem es für mich eh nur Hobby ist, macht es auch nichts, wenn ich mal an etwas scheitere

Ich hab derweil mal nach Pipes und Sockets gegoogelt, auch einiges gefunden, aber sowas wie ein Anfängertutorial zu dem Thema habe ich nicht gefunden
 

Neue Beiträge

Zurück