# Kommunikation zweier Java-Programme



## schoppenhauer_entfernt_ (24. Dez 2005)

Hallo.
Ich habe ein Problem: Wie kann ich es mit Java anstellen, dass zwei Programme, die aber auf demselben System laufen, miteinander kommunizieren.
Also ein Beispiel wäre, dass ich ein "großes" Programm habe, in dem ich irgendwelche Dateien öffne, und ein "kleines" Programm, mit dem ich bestimmte Dateitypen verknüpfe. Wenn das "große" Programm bereits läuft, wird diesem nur gesagt, dass es die Datei zusätzlich öffnen soll.

Sowas in der Art.

Eine Möglichkeit dies zu tun, ist, es über die eigene IP-Adresse zu machen. Unter Windoof ist die 127.0.0.1.
Also zum Einen würde ich gerne wissen, ob es noch eine bessere Möglichkeit gibt, dies zu tun.
Zum Anderen... nunja... wenn nicht... dann wäre es sinnvoll zu wissen, ob diese IP-Adresse auch bei anderen Betriebssystemen 127.0.0.0.1 ist, also z.B. unter Linux.
Zum Anderen benötige ich dann eine Routine um herauszufinden, welcher Port frei ist, bzw. welchen Port mein Programm benutzt, nicht, dass das Programm einen bestimmten Port blockiert, der für etwas anderes reserviert ist.


----------



## Roar (24. Dez 2005)

Schoppenhauer hat gesagt.:
			
		

> Also ein Beispiel wäre, dass ich ein "großes" Programm habe, in dem ich irgendwelche Dateien öffne, und ein "kleines" Programm, mit dem ich bestimmte Dateitypen verknüpfe. Wenn das "große" Programm bereits läuft, wird diesem nur gesagt, dass es die Datei zusätzlich öffnen soll.


 ich hoffe das is nur ein beispiel, denn für mich macht es keinen sinn 



> Windoof


 wat is dat denn


> Also zum Einen würde ich gerne wissen, ob es noch eine bessere Möglichkeit gibt, dies zu tun.


 ne is gut


> Zum Anderen... nunja... wenn nicht... dann wäre es sinnvoll zu wissen, ob diese IP-Adresse auch bei anderen Betriebssystemen 127.0.0.0.1 ist, also z.B. unter Linux.


 das is standard so, wenn ich mich nicht irre ist das auch eine sache der netzwerkkarte nicht des betriebssystems.


> Zum Anderen benötige ich dann eine Routine um herauszufinden, welcher Port frei ist, bzw. welchen Port mein Programm benutzt, nicht, dass das Programm einen bestimmten Port blockiert, der für etwas anderes reserviert ist.


wenn du einen port > 1000 auswählst kannst du davon ausgehen, dass er nicht reserviert ist. und dass genau der, den du dir auswählst gerade gleichzeitig von andem anderen programm benutzt wird ist mehr als unwahrscheilnich 

schöne weihnachten noch


----------



## Lim_Dul (24. Dez 2005)

127.0.0.1 ist die sogenannte Loopback Adresse, die auf den localen Rechner verweist. Das tut es bei jedem Betriebssystem, dass einen TCP/IP Stack hat.


----------



## schoppenhauer_entfernt_ (25. Dez 2005)

@Lim_Dul: Was ist, wenn man z.B. keine Internetverbindung / Netzwerkkarte hat. Geht das dann auf den Systemen auch? Bzw. bei welchen Systemen geht es denn nicht? Gibts da ein Beispiel?

@Roar: Naja... Das mit >1000 war mir klar (genaugenommen habe ich das bisher auch immer so gemacht  :wink: nur verlasse ich mich darauf nicht so gerne. Unwahrscheinlich ist mir da noch zu wahrscheinlich. Was ist denn, wenn ich mir z.B. denke "och, 6347 ist doch eine schöne Zahl" und irgendjemand anders denkt sich ZUFÄLLIG dasselbe... Das wird zwar nicht passieren, aber trotzdem ist es möglich.
Zum Anderen ist ein solches Programm durchaus sinnvoll (auch wenn ich dies nicht dafür brauche). Denke z.B. an den Acrobat Reader. Die erste geöffnete PDF-Datei startet den Acrobat, jede weitere wird im selben gestartet. Aber ich sage mal lieber nicht, wozu ich es brauche, das ist noch viel sinnfreier   .
Windoof ist eine abfällige Bezeichnung für Windows.


----------



## Lim_Dul (26. Dez 2005)

Einen TCP/IP Stack sollte mittlerweile jedes Betriebssystem mitbringen.
DOS dürfte keinen haben  Und bei Windows 95 könnte es auch sein, dass da noch keiner dabei ist bzw. nicht installiert ist.

Ansonsten sollte es immer gehen, egal ob Netzwerkkarte vorhanden oder nicht. (100% garantieren kann ich es aber nicht)


----------



## schoppenhauer_entfernt_ (26. Dez 2005)

Lim_Dul hat gesagt.:
			
		

> Einen TCP/IP Stack sollte mittlerweile jedes Betriebssystem mitbringen.
> DOS dürfte keinen haben  Und bei Windows 95 könnte es auch sein, dass da noch keiner dabei ist bzw. nicht installiert ist.
> 
> Ansonsten sollte es immer gehen, egal ob Netzwerkkarte vorhanden oder nicht. (100% garantieren kann ich es aber nicht)



Danke. Ähm... Aber wie man jetzt schaut, welcher Port noch unbenutzt ist, weiß ich immernoch nicht. Gibt es da überhaupt eine vorgesehene Methode, oder muss man das selber ermitteln?
Wenn man das selber ermitteln muss, dann reicht ja (um sein Programm zu identifizieren) ein in regelmäßigen Intervallen ausgeführtes Kontrollgsignal...


----------



## Lim_Dul (27. Dez 2005)

Einen freien Port zu finden ist nicht schwer, da sollte es vermutlich reichen einfach 0 als Port anzugeben. (Bin jetzt zu faul in die API zu gucken, da sollte das aber stehen).

Das Problem ist nur, wie das andere Programm diesen Port findet.


----------

