Programm greift auf anderen PC zu?

Extremefall

Bekanntes Mitglied
Hallo,
ich habe folgendes vor. Ich habe auf dem PC A und dem PC B ein Programm geöffnet. Wenn der Nutzer von PC bei der GUI einen Button klickt, soll beim Nutzer von PC B ein Popup erscheinen. Also muss eine Verbindung zwischen genau diesen Rechnern bestehen. Ich dachte es mir so: Person A und Person B öffnen das Programm. Person A gibt die IP oder etwas ähnliches von Person B an und wenn beide das Programm geöffnet haben, wird eine Verbindung zwischen den beiden Rechnern über das Internet hergestellt. Die Aktionen (z.B. Buttonklicks) sollen über diese Verbindung übertragen werden. Also gibt es einen Sender und einen Empfänger, die ihre Rollen tauschen können.

Nur wie setze ich es praktisch um? Kennt ihr gute Tutorials und Erklärungen? Wie kann ich so etwas realisieren?
 
Geht das über den Knock Knock Socket?

Wie kann ich denn über Sockets Streams über das Internet empfangen? Denn das müsste doch anders wie bei einem lokalen Socket funktionieren.
 
Wie kann ich denn über Sockets Streams über das Internet empfangen? Denn das müsste doch anders wie bei einem lokalen Socket funktionieren.

Man kann es wie existierende Softwares machen; diese Verbinden sich zuerst über einen Server, dann machen sie sich eigene Schlupflöcher und am Schluss haben sie eine P2P-Verbindung ohne, dass einer der Clients irgendwas offen haben muss.
Praktisch gesehen kannst du aber auch einfach beim "Server"-Rechner den Port von aussen auf dem Router forwarden. Danach kannst du mit der öffentlichen IP dessen darauf zugreifen. Ist bei dynamischen IPs ein Problem - da gibts aber DynDNS etc 🙂
 
Hättet ihr dazu eventuell ein gutes Tutorial, da ich so etwas noch nie gemacht habe? Kann man keine Verbindung mittels Socket über das Internet aufbauen? Wie machen es denn die ganzen Spiele, wo man z.B. gegen einen anderen Spieler via IP spielt? Ich bräuchte dringend Hilfe. 🙂
 
Kann man keine Verbindung mittels Socket über das Internet aufbauen?
Also, als Beispiel: Ich will mit meinem Computer zu Hause kommunizieren. Dort lasse ich einen [c]ServerSocket[/c] laufen. Meine interne IP sei 192.168.1.2 und die öffentliche IP 62.202.26.177 (faetzminator.ch). So geh ich einfach auf den Router, und konfigurier ein Port Forward von diesem Port xy auf 192.168.1.2. Wenn ich nun von aussen (per IP oder faetzminator.ch) auf den Port xy zugreife, habe ich eine Verbindung mit diesem Computer hergestellt.
Umgekehrt geht das natürlich nicht, da ich hier bei der Arbeit nicht einfach ein Port Forward auf diesen Computer einrichten kann.

Als Alternative kann ich z.B. beide Computer auf einen Server verbinden lassen, welcher die Daten an den anderen Socket weiterleitet.
Das kann soweit erweitert werden, dass mit ein paar Tricks die beiden Clients durch den geöffneten Socket mit sich selbst (direkt, also P2P) kommunizieren können, ohne die Firewall (auf dem Router, Computer, ...) zu öffnen. Leider ist mir der Name dieser Technik gerade entfallen, so dass ich keine "Anleitung" dafür finde. Aber AFAIK basiert es auf UDP (und nicht TCP) und wird von Programmen wie Skype (oder auch Torrent-Clients?) verwendet - aber eben, das geistert nur gerade bei mir im Kopf rum.

Edit: hier habe ich was gefunden: Der Lochtrick | heise Security
 
Also die erstgenannte Lösung funktioniert wie im LAN. Einfach [c]new Socket(host, port)[/c] öffnen, und der Socket geht genau so übers Internet.
Für die zweite Lösung sollte sich mit "java client server example" schnell etwas googeln lassen (die Beispiele gelten natürlich auch für Lösung 1).
Für das dritte Beispiel hatte ich mit "java UDP hole punching" in den Top10 auch gleich zwei Treffer: NAT tunnel using UDP hole punching mehod in Java language Ma?karáda: masquerade.cz - GNU/Linux | TCP/IP sít? | a ostatní… und 2 projects tagged "UDP Hole Punching" | freshmeat.net
 
Mach dich doch ein Mal über Netzwerke schlau.
Natürlich hat jeder, der am Internet verbunden ist, eine öffentliche IP. Bzw. jedes Netz hat eine (oder mehrere). Wie oben bereits erwähnt gibts da Dyndns als Aushilfe bei nicht-statischen IPs (die meisten privaten User haben dynamische IPs).
Ich will (und kann) nicht weiter auf Netzwerkfragen eingehen - wir sind hier ein Java- und kein Netzwerkforum 😉 Ansonsten kann es ein Mod mal ins Netzwerk-Unterforum verschieben.
 

Neue Themen


Zurück
Oben