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? Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
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 Zitieren
Bubble Geschrieben 7. Juni 2005 Geschrieben 7. Juni 2005 Weitere Möglichkeiten: Remote Procedure Call (RPC), XML RPC, Corba, Message Passing (z.B. MPI), ... Zitieren
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. Zitieren
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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.