# Verbindung zwischen 2 Computern herstellen



## Coder21 (3. Apr 2008)

Hallo,

ich möchte ein Programm schreiben, welches Daten von einem Pc direkt auf den anderen sendet, falls auf beiden Pc's das Programm gerade läuft. Wie kann das eine Programm beim Start überprüfen, ob auch das andere läuft und zu diesem dann eine Verbindung herstellen? (die IP-Adresse ist ja nicht bekannt, da sich diese ja bei jeder Sitzung ändert)

Vielen Dank für eure Antworten!


----------



## killer4561 (4. Apr 2008)

Coder21 hat gesagt.:
			
		

> Hallo,
> 
> ich möchte ein Programm schreiben, welches Daten von einem Pc direkt auf den anderen sendet, falls auf beiden Pc's das Programm gerade läuft. Wie kann das eine Programm beim Start überprüfen, ob auch das andere läuft und zu diesem dann eine Verbindung herstellen? (die IP-Adresse ist ja nicht bekannt, da sich diese ja bei jeder Sitzung ändert)
> 
> Vielen Dank für eure Antworten!



Leider geht das nicht. Man muss schon die IP des Zielrechners haben mit dem man sich verbindet. Ist halt wie mit der Post. Wenn du jemandem nen Brief schickst und der zieht aus bevor der Brief ankommt dann bekommt der den auch nicht mehr. Gibt da allerdings schon ne Lösungsmöglichkeit. 

Du braucht irgendwo zwischen deiner und der Zielverbindung eine statische Addresse. Dies wäre über eine Anwendung wie z.B. Dynip möglich. Das ist nen Programm welches wann immer sich die IP Addresse verändert an nen Server die neue IP Addresse übermittelt. Man registriert bei dynip ne feste Addresse. Zum Bleistift "hallo.dynip.com". Wenn du nun versuchst dich mit dem Programm zur anderen Anwendung zu verbinden wird die hallo.dynip.com automatisch aufgelöst und du bekommst dann die momentane IP-Addresse. Genauso ähnlich funktioniert das ganze halt auch mit anderen Anwendungen wie z.B. ICQ.  Irgendwo steht nen Server rum der ne statische Addresse hat und mit dem verbinden sich die ganzen Clients dann halt und der Server gibt dann die Nachrichten an das Ziel weiter. 

Naja theoretisch ginge es wohl auch noch einfach mal mit allen möglichen IP Addressen ne Verbindung herzustellen. 0.0.0.0 - 255.255.255.255. Aber wenn du dann Pech hast lauscht irgendeine andere Anwendung auf dem Port und der IP und das geht dann voll in die Hose. 

Dynip ist leider nicht umsonst. Kannst das ganze 30 Tage kostenlos testen und danach sind es dann etwa 30$ pro Jahr.


----------



## Niki (4. Apr 2008)

Schau dir mal diese Klasse an: MulticastSocket

Mit Multicasts kannst du an eine Gruppe Nachrichten schicken. Jeder der dieser Gruppe (IP) angehört bekommt diese Nachrichten und kann darauf reagieren.


----------



## HoaX (4. Apr 2008)

multicast wirst du aber nicht direkt übers internet zum laufen bringen


----------



## xote (5. Apr 2008)

Im lokalen Lan funktioniert es aber ganz gut. IMHO gut genug. Den Port auf den die Programminstanzen aber hören sollte man im Programm dann wirklich einstellen können. Vielleicht kollidiert da was mit einer anderen Anwendung...


----------



## tuxedo (7. Apr 2008)

killer4561 hat gesagt.:
			
		

> Coder21 hat gesagt.:
> 
> 
> 
> ...


----------



## Wie wärs mit einem Server (8. Apr 2008)

Hi, mach es einfach so:
Schreibe ein Server Programm, mit statische IP, z.b. via dyndns..., so nun connectest du mit ieinem Pc mit dynip auf diesen server, der entnimmt der verbindung deine ip und gib sie an andere clienten weiter, die sich ebenfalls auf dem server eingeloggt haben...


----------



## tuxedo (9. Apr 2008)

Gegenargument:

Server kosten Geld. DynDns kostet nix.

- Alex


----------



## Du hasts nicht verstanden (9. Apr 2008)

Über den server soll kein Datentransfer laufen... er soll lediglich den Clienten die aktuellen IP-Adressen senden, und so ein simpler Server läuft unter jeder DSL-Leitung 2000 etc... dann müssen die einzelnen Clienten nur noch Ports öffnen und fertig. Dann braucht nur der Server DynDns .. ist viel praltischer, der einzige Nachteil, der PC muss halt an sein.. aber das sollte ja bei so einem Fall nicht das Problem sein.... oder machs über Hamachi


----------



## tuxedo (9. Apr 2008)

Was ist denn daran praktischer?

Auch wenn du keinen Server mietest und ne Kiste daheim verwendest:

- Du sparst dir nichtmal eine DynDns Adresse im Vergleich zur Serverlosen-Lösung. Weil: Bei einer Socketverbindung zwischen 2 Clients braucht's auch nur eine Socket-Ziel-Adresse. Also 1x DnsDns (sofern die Verbindung immer von A nach B und nicht auch von B nach A aufgebaut wird, sonst sinds halt 2 DynDns Adressen, was aber auch nicht wild ist, weil die nix kosten).

- Du brauchst nicht nur nen extra Rechner der immer laufen muss wenn man die Anwendung nutzen will, nein, das Ding kostet auch noch extra Strom. Für den Fall dass der User noch bei Mami wohnt mag das vllt. nicht weiter tragisch sein. Da gibts ja den Geldgeber "Papa" und/oder "Mama". Aber wer seinen Strom selbst zahlt wird  da schon ein Auge drauf haben. 

- Ports musst du auch so öffnen, ob mit oder ohne Server

- Wenn du nen extra Rechner daheim hinstellst: Dann stehen ja bei einem der beiden Clients 2 Rechner... Gut. Man kann ja auch Client und Server auf einem Rechner laufen lassen. Aber dann kann man auch gleich Client und Server in eine Anwendung packen. Und wo ist man dann wieder angelangt? Na? Dämmerts? Richtig... 2 Rechner, einer pro Client. Ergo: Der Server ist unnötig.

Von "praktischer" kann ich nix sehen. Man spart sich nix. Nur die Kommunikation wird etwas "komplexer" da auch noch ein Server als IP-Telefonbuch fungieren muss. 

Es reicht 1x eine DynDns Adresse auf einem der beiden Clients. Und es reicht auch 1x an einem Router nen Port zu öffnen. 

Soviel zu dem Thema, Mr. "Du hasts nicht verstanden".

Meld dich an und schreib nicht als anonymer Gast. Dann kann ich dich auch beim Namen nennen. 

Gruß
Alex


----------



## Meine Name ist Chris (9. Apr 2008)

Also natürlich reicht es bei der Theorie, dass es bei 2 Clienten bleibt, völlig aus, da gebe ich dir scon recht, aber mal ehrlich man sollte schon in erwägung ziehen, dass es vlt von mehreren Leuten genutzt wird, und ich denke es kann doch nicht sein, dass sich jeder der das Programm holt auch automatisch ne DynDns besorgen muss... Wenn es bei 2 bleibt is der Server unnötig! Anmelden werde ich mich, keine Sorge. Ist nämlich ein gutes Forum, aber da ich noch nichtlang mit Java zu tun hab, bin ich noch unregistered... 

Gruß Chris


----------



## tuxedo (9. Apr 2008)

Naja, der Threadstarter hat nunmal explizit nach der Kommunikation zwischen 2 Computern gefragt...

Klar dass bei mehreren Clients ein Server von Vorteil ist... Muss ich glaub nix weiter zu sagen ;-)

- Alex


----------



## Coder21 (13. Apr 2008)

Danke für eure Antworten!


----------

