maddin Geschrieben 6. Juni 2005 Geschrieben 6. Juni 2005 Hi, ich habe eine kleiner Programm, in ich zwischen zwei Prozessen Daten austauschen muss, und suche einen Weg, wie ich das bewerkstelligen kann. Aus der WinSDK ist mit die Funktion CreateNamedPipe bekannt, mit der ich einen Pipe in einem Process erstellen und in dem anderen mich mit dieser Pipe verbinden kann, um die Daten auszutauschen. Soetwas änhliches Suche ich für Java. Gibt es sowas? Oder hat vielleicht jemand eine andere Idee, wie ich das Problem lösen kann?
speedi Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 Du könntest das ganze z.B. über Dateien machen. ODer vielleicht über java Net (setzt nen Stream auf nen Port deines PCs und das andere Programm hört diesen Port ab). am besten wäre es aber (weis nicht ob das in deinem speziellen Fall Sinn macht) du machst deine beiden Programmteile in ein Programm und arbeitest mit Multithreading (mehrer Programmteile laufen quasi Parallel ab(natürlich nicht ganz Parallel da der Prozessor immer noch umschalten muss). So kannst du dann die Methoden der Threads aufrufen oder direkt Variablen ändern wenn diese public sind. Was hast du denn genau vor? Wenn du das vielleicht sagen könntest kann ich dir noch genauere Vorschläge machen.
geloescht_Newlukai Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 So kannst du dann die Methoden der Threads aufrufen oder direkt Variablen ändern wenn diese public sind. Oder - eleganter - mit PipedInput- bzw. PipedOutputStreams oder deren Reader-Pendants arbeiten.
Mephisto81 Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 Hört sich für mich irgendwie so an als könnte dir CORBA weiterhelfen. Ich arbeite damit meistens unter C++ aber für Java gibts das natürlich auch: JacORB mfg mep
perdian Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 mit PipedInput- bzw. PipedOutputStreamsDas ganze funktioniert allerdings nur, wenn der Datenaustausch innerhalb eines Prozesses und dort in verschiedenen Threads (also letzten Endes dergleichen JVM) abläuft. Wenn ich den OP richtig verstanden habe geht es hier allerdings darum zwischen verschiedenen Prozessen Daten auszutauschen, dann fallen die Pipes weg. Zum Ursprungsproblem: Es gibt eine ganze Reihe von möglichen Lösungen: - Files von Prozess1 schreiben und vom Prozess2 lesen - Datenbankeinträge schreiben/lesen - Lokale Sockets öffnen und darüber die Daten austauschen Wenn Prozess2 von Prozess1 aus gestartet worden ist (oder andersrum), stout und stderr auslesen, stdin schreiben
Bubble Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 Weitere Möglichkeiten: Remote Procedure Call (RPC), XML RPC, Corba, Message Passing (z.B. MPI), ...
geloescht_Newlukai Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 Das ganze funktioniert allerdings nur, wenn der Datenaustausch innerhalb eines Prozesses und dort in verschiedenen Threads (also letzten Endes dergleichen JVM) abläuft. Wenn ich den OP richtig verstanden habe geht es hier allerdings darum zwischen verschiedenen Prozessen Daten auszutauschen, dann fallen die Pipes weg. Deswegen habe ich mich ja auch auf speedis Kommentar bezogen, die Programmteile in einem Programm zu vereinen. Das mein Vorschlag nur innerhalb eines Prozesses funktioniert, ist mir auch klar.
perdian Geschrieben 8. Juni 2005 Geschrieben 8. Juni 2005 Deswegen habe ich mich ja auch auf speedis Kommentar bezogen, die Programmteile in einem Programm zu vereinen.Dann macht es sowieso viel mehr Sinn direkt die Datenstrukturen aufeinander abzustimmen und die Objekte direkt miteinander kommunizieren zu lassen. Vielleicht kann uns ja der OP mal verraten, was genau an Daten zwischen den zwei Anwendungen ausgetauscht werden soll. Ansonsten geht das muntere Raten und Einwerfen von Ideen, die vielleicht/wahrscheinlich für den genauen Einsatzzweck vollkommen überdimensioniert sind, munter weiter.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden