Speicher reservieren damit verschiede Programme diesen Bereich nutzen können
-
Hi,
Ist es möglich im RAM einen festen Bereich zu reservieren.?
Ich möchte, dass über diesen Bereich mehrere selbst geschriebene Programme
miteinander Kommunizieren.
Diesen Bereich möchte ich dann noch einmal unterteilen,
Beispielsweise die ersten 8 bit für Art der Nachricht etc.
Geht das oder macht das Betriebssystem da einen
Strich durch die Rechnung?Wenn es geht, welche Sprache sollte ich da nutzen?
Ich möchte keine Dienste(Windows) nutzen oder Systemvariablen nutzen und
verwenden.Danke
-
Du suchst nach IPC via shared memory; frag mal Google.
-
Dieser Thread wurde von Moderator/in nman aus dem Forum Themen rund um die IT in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Du suchst Shared Memory. Für Windows gbit es sicherlich etwas ähnliches.
-
Unter Windows verwendet man dazu Memory-Mapped-Files.
Wobei man dazu nicht wirklich ein File braucht
-
Das geht eher nicht. (Also ohne eine native API. Falls es das ist, was du mit Systemvariablen meintest.) Und falls du mehrere Programme hast die kommunizieren sollen, würde ich einfach Sockets empfehlen. Ich weiß ja nicht 100%ig was du machen willst, aber wenn du diese Frage stellst wird es wohl kein Super-High-Performance-Code sein, und da sind Sockets einfach und (relativ) schnell.
-
Machbar ist das, ja. Aber du erfindest gerade das Rad neu, noch dazu mit vielen Ecken, wo es doch schon lange unkaputtbare Leichtlaufallwetterlotuseffektleichtmetallräder der Standard sind. Fängst du zum Beispiel mal hier an zu lesen:
http://en.wikipedia.org/wiki/Inter-process_communication
-
Ansonsten macht man das über Dateien auf der Festplatte oder mit IPC im RAM. Ist etwas Mühe erforderlich!
-
BTW:
http://www.boost.org/doc/libs/1_53_0/doc/html/interprocess.html
http://www.boost.org/doc/libs/1_53_0/doc/html/interprocess/sharedmemorybetweenprocesses.html
-
RPC,IPC und Dateien hatte ich auch schon erwogen.
Der Einfachheit halber werd ich dann wohl mit WCF arbeiten.Danke
-
unter windows kann man in DLLs shared memory anlegen, jeder prozess der diese DLL laedt, hat diesen teil vom speicher mit allen anderen prozessen die diese DLL luden gemeinsam. google nach:
dll shared data segment
-
adonis schrieb:
Der Einfachheit halber werd ich dann wohl mit WCF arbeiten.
Ich weiss nicht was an WCF jetzt besonders einfach sein soll.
Einfach wäre .NET Remoting.
-
Ich hab jetzt mal einen kleinen Testgeschrieben mit .net remote ipc's.
Funktioniert ganz gut. Jetzt wollte ich Events mit ins Spiel bringen.Hier scheint es dann aber zu Sicherheitsverletzungen zu kommen.
Der Typ System.DelegateSerializationHolder und die davon abgeleiteten Typen (z.B. System.DelegateSerializationHolder) dürfen in dieser Sicherheitsebene nicht deserialisiert werden.
Ich habe es mit cklickonce-Sicherheitseinstellungen auf
Voll vertrauenwürdig gestellt. Selber Fehler.[SecurityPermission(SecurityAction.Demand)] geht auch nicht
muss ich mit Zertifikaten arbeiten?
-
Keine Ahnung, mit Remoting + Delegates hab' noch nie was gemacht.
Hab' bisher nur einfach Interfaces (ohne Events/Delegates) über Remoting rumgereicht (was gut funktioniert hat und vor allem einfach umzusetzen war).
-
Habe den Event statisch gemacht, funktioniert aber leider nur beim Server.
Aber egal danke. Für das Problem hab ich in der c# Ecke nen thread auf gemacht.Zur not muss ich es mal im MSDN-Forum Probieren