@Patrik08
Nein das ist glaube ich falsch rübergekommen.
Meine Idee zum Programm war für Linux eine einfache Möglichkeit
zu schaffen auf die mountbaren Verzeichnisse anderer Recher am
Netz zuzugreifen und diese einzuhängen, ohne das man das Netz kennt.
Alle diese Anwendungen sind reine Konsolenanwendungen, ich will
halt jetzt onMain eine Grafische Oberfläche mittels Qt verpassen,
das ist schon alles.
onMain -> Hauptprogamm zur Speicherung und Steuerung
onPing -> Programm welches "system(ping) dazu verwendet andere
Rechner zu finden und die gefunden Ips an onMain
weiterleited
onServer -> Server der einer onClient Anwendung die mountbaren
Verzeichnisse auf dem Rechner mitteilt
onClient -> Prüft ob auf dem Recher ein onServer läuft und fordert
die Liste der freigegeben Verzeichnisse an
Alle Anwendung sollen über ein shell script gestarted werden, onMain
erzeugt ein SHM Segent und greift über einen Pointer von onShm
darauf zu. Alle ander Anwendung binden sich ebenfalls an das Segement
an und legen ebenfalls eine Pointer von onShm auf die gleiche Stelle
im Segemnet, welches dann in allen Anwendungen global ist.
Folglich greifen alle Programme über einen Pointer auf den gleichen
Speicher zu. Dies hat den Vorteil das man in den Programmen den
onShm Struct wie eine ganz normalen Struct benutzen kann.
Zum Ping, onMain schreibt die Startaddresse als string sowie die
Anfangs- und Endaddresse als int in den Struct. Dannach wird
ping_order auf GET_DATA (ein einheitlicher Define für alle Progamme)
gesetzt. Nun übernimmt onPing die Daten und beginnt mit der Arbeit.
Wenn ein Ping erfolgreich war überschreibt onPing die ping_ip mit der
gefunden ip und setzt ping_status auf DATA_AWAIDABLE(define).
Beim nächseten überprüfen von ping_status im Main Loop von onMain
wird wird erkannt das neue Daten vorhanden sind. Jetzt wird ping_ip
von onMain in einer Liste gespeichert und ping_status auf
DATA_RECIVED gestellt. OnPing welches die Zwischenzeit mit usleep
totgeschlagen hat, prüft ping_status und setzt im Falle DATA_RECIVED
ping_status wieder auf WORKING und macht mit der nächsten ip
weiter. Ist alles fertig setzt onPing seinen Status auf READY um zu
zeigen das es bereit für eine neue Aufgabe ist.
Code: Alles auswählen
typedefine struct on_shm_type
{
int ping_start; //int Wert für die letzte ip Stelle vom ersten Ping
int ping_max; //endwert für die letze ip Stelle als int
char ping_ip[16]; //string der ersten ip _> zB.:192.168.0.5
int ping_order; // signale vom Hauptprogamm an das Ping Programm
int ping_status; // steuert main switch im Ping Programm / Zustand
int client_status;
int client_order;
char client_ip[16]; // ip zu welcher sich Client verbinden soll
char client_data[1024]; // Puffer für empfangene Daten
int server_order;
int server_status;
char server_ip[16]; // ip des Clients der mit Server verbunden ist
char server_data[1024]; // Puffer für zu sendende Daten
} onshm;
BTW: Mein Problem ist eigendlich nur das der globale definierte Struct
als undefined gilt, also einfach nicht vom Compiler erkannt wird.
In der Consolenanwendung hatte ich damit nie Probleme, aber
in Qt will es einfach nicht gehen.