Interprozesskommunikation

 

Das Programm Ipc_demonstration demonstriert Interprozesskommunikation über die von mir geschriebene Klasse Ipc. Einfach mehrere Instanzen des Programms starten. Wenn in einer Instanz der rote Kasten bewegt wird bewegt er sich auch in allen anderen Instanzen.


Das Programm Ipc_sniffer ist dazu bestimmt, den Datenstrom eines Programms, das die Klasse Ipc verwendet mitzulesen, um zum Beispiel so Fehler in der Kommunikation schneller finden zu können.


Das Programm Relaystation ist dazu da, die Kommunikation eines Programms, das die Klasse Ipc benutzt über ein lokales Netzwerk verbinden zu können.


LokalChat ist eine weitere Demonstration.



Die Klasse Ipc funktioniert in etwa so:


Jede neue Instanz erzeugt eine Socketdatei, deren Namen aus dem Anwendungsnamen, der Prozess ID und einer Reihe von Sicherheitskennungen besteht.


Unter Windows muss zusätzlich noch eine Datei im Temporär Verzeichnis erstellt werden, deren Namen dem Namen des Sockets entspricht. Der Inhalt der Datei spielt keine Rolle, der Dateiname zählt. Dies ist nötig, damit die Erfassungsmethode auch unter Windows funktioniert.


Als nächstes wird der Inhalt des Temporär Verzeichnisses erfasst und alle gefundenen Einträge, die nicht den Filterkriterien entsprechen werden wieder aus der Liste entfernt. Übrig bleiben die Socketdateien der anderen Instanzen. Der Eintrag für die Socketdatei der eigenen Instanz wird ebenfalls entfernt.


Danach meldet sich die Instanz bei allen anderen Instanzen an.


Wenn die Instanz geschlossen wird meldet sie sich bei den anderen Instanzen ab.



Das ganze lässt sich auch sehr gut aufs Netzwerk anwenden, ich habe bereits ein gut funktionierendes Netzwerkrelay mit dem ich die Kommunikation übers Netzwerk weiter übertragen kann. Die Netzwerkfunktion ist mittlerweile direkt in die Klasse Ipc integriert.

Download der Quellen von Ipc_demonstration Version 0.33:

Download der Quellen von Ipc_sniffer Version 0.12:

Download der Quellen von Relaystation Version 0.29:

Download der Quellen von LokalChat Version 0.11:

Hinweis zu Ipc_sendfile: Da der Datenstrom vorm senden und beim empfangen komplett in den Arbeitsspeicher geladen wird keine zu grossen Dateien übertragen!

Download der Quellen von Ipc_sendfile Version 0.09:

Download der Quellen von IpcKompass Version 0.10: