Autor Beitrag
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 10.08.03 15:02 
Hallo,

Ich müsste das machen, was der Titel schon sagt :D
Nur weiss ich nicht wie (nur HDD=Langsam) :(

Also, ich habe keine Ahnung von gar nichts, aber davon jede Menge...
Für Hilfe wäre ich echt dankbar.

Viele Grüsse.

P.S.: Vielleicht ists unglücklich ausgedrückt ?
Also auf einem Rechner laufen 10 Programme von mir (können unterschiedliche oder gleiche sein). Neun davon müssen mit einem "Hauptprogramm" kommunizieren können.
Das ganze muss ab Win95 funktionieren !
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: So 10.08.03 15:11 
Da gibt es mehrere Möglichkeiten, die alle unter den Begriff IPC (InterProcess Communication) fallen.
Du hast die Auswahl zwischen Pipes, Shared Memory (das schnellste), WM_COPYDATA und Sockets.

Das ganze hier jetzt auasführlich zu erklären mit Beispielen würde den Zeichenplatz der Beiträge sprengen. Aber vereinzelt sind diese IPC Methoden hier im Forum bereits in irgendeiner Form aufgetaucht.

_________________
Ist Zeit wirklich Geld?
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 10.08.03 15:25 
Danke erstmal:

Shared Memory => lief das nicht nur bei win32 ???
Ansonsten sag doch mal, welches ich verwenden sollte ?

Es muss keine wahnsinnige Performance haben, und ich will auch nicht den ganzen Hintergrund dazu erklärt haben.

Einige details:

- ich will meistens Tabellen (max. 100 KB) übertragen, und ganz selten mal größere Dateien.
- meistens (fast immer) plaudern nur 2 Prgs gleichzeitig miteinander.
- Es muss möglich sein, dass das "Empfänger-Prg" auf eine Antwort warten kann, ohne einzufrieren.
- Und es muss ein "TimeOut" geben, oder halt eine EMessage, falls ich ein nicht mehr laufendes Prg anspreche.

Viele Grüsse.
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: So 10.08.03 15:47 
recall hat folgendes geschrieben:
Shared Memory => lief das nicht nur bei win32 ???

Und zu welcher "Bit-Klasse" von Windows gehört deiner Meinung nach Win95 ? win64 wird es wohl nicht sein. Und wie steht es mit win16 ? Nein, das war ja Win 3.11, das win16 war. Dann gabe es für Win 3.11 noch eine 32 Bit Erweiterung. Aber die nannte sich dann Win32s.


Zitat:
Ansonsten sag doch mal, welches ich verwenden sollte ?

  • Pipes sind eigentlich nur für 2 Prozesse gedacht. Einer schreibt und der andere liest. Der lesende Prozess kann mit PeekNamesPipe abfragen wieviele Daten in der Pipe sind, ohne dass das Programm dabei hängen bleibt.

  • Sockets kann man z. B. mit den Indy-Komponenten ansprechenen. Sie bieten auch die Möglichkeit der Kommunikation über mehrere Computer hinweg. Du brauchst dabei einen Server, der alle Clients (deine Prozesse) koordiniert sowie einen freien Port.

  • Bei Shared Memory musst du persönlich eine feste Anzahl an Bytes reservieren. Also nichts für dynamische Strukturen, da du jedesmal den Speicher per Hand freigeben und einen kleineren/größeren Block reservieren musst. Den Shared Memory musst du vor Überschreibung von einem anderen deiner Prozesse schützen. Dazu brauchst du Kontrollstrukturen wie Mutexe und Semaphoren mit denen du den Schreib/Lesezugriff auf den Speicher steuerst.

  • WM_COPYDATA braucht ein Formular. Diese kann auch unsichtbar sein (Classes.AllocateHWnd/Classes.DeallocateHWnd). Die Anwendung bekommt eine WM_COPYDATA Botschaft zugesandt und kann dann darauf reagieren. Der "Sender" kann mit SendMessageTimeout() die WM_COPYDATA Botschaft verschicken und bei einem Timeout darauf reagieren. WM_COPYDATA nutzt intern auch Shared Memory, nur geschieht dabei alles automatisch.



Entscheide dich nun selbst.

_________________
Ist Zeit wirklich Geld?
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 10.08.03 17:35 
Danke.

Werde das letzte nehmen. Wenn du Lust hast, dann kannst du mir noch was dazu schreiben (od. links ?) ?

Und:
Zitat:
Und zu welcher "Bit-Klasse" von Windows gehört deiner Meinung nach Win95 ?
:oops: (Wollte win64 fragen, Frage war aber saubl...)

Viele Grüsse.
Gast
Gast
Erhaltene Danke: 1



BeitragVerfasst: So 10.08.03 17:42 
Schau auf meiner HP einfach mal nach dem Hooktutorial. Da bespreche ich auch diverse IPC-Methoden!
recall Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 10.08.03 17:44 
thx