Verbindung zweier, über Internet verbundener PCs

Maddin

Mitglied
Guten Abend,

Eine Java-Applikation (um genauer zu sein: das Spiel Tron) soll netzwerkfähig gemacht werden. Unter netzwerkfähig verstehe ich hierbei, dass es nicht nur über das lokale Netzwerk (also LAN etc.) funktionieren soll, sondern auch via Internet.
Der bisherige Ansatz sieht so aus, dass ich es mit einem ServerSocket versuche, welcher von Benutzer 1 gestartet wird. Auf diesen soll Benutzer 2 nun zugreifen und Daten schicken sowie empfangen.
Allerdings scheine ich nicht durch die Firewall zu kommen...

Die Frage ist nun zum einen, ob dies überhaupt mit meinem Lösungsansatz zu lösen ist und wie die Verbindung hergestellt werden kann.

Mein Problem habe ich zwar bereits im Chat gestellt, bin daraus aber nicht wirklich schlau geworden.. Als Tipp wurde mir dort "UPnP" gegeben, trotzdem wollte ich fragen, ob es nicht einen einfacheren Weg gibt.


Vielen Dank im Voraus,
Martin
 
Welchen Port verwenden die Anwendungen?
TCP oder UDP?
Ist der entsprechende Port auch bei Server und Client beim Firewall zugelassen?
Gibts beim Server einen Router vorm Internet?
Wenn ja:Hat der Router eventuell eine eigene Firewall?
Ist Portforwarding eingerichtet?
 
Hallo,

Beim Erstellen des Serversockets gibst du doch sicher an, an welchen Port sich dieser bindet?
Denn diesen musst du in der Firewall des Servers für freigeben.

Weiters will sich der Client ja auch zum Server auf den vorher festegelegten Port verbinden, und muss auch das Recht dazu haben (siehe Firewall).

Soo,
Bei einem Szenario wo sich Clients von ausserhalb über das Internet verbinden, und die Server nicht direkt unter der öffentlichen IP-Adresse erreichbar sind, sondern via NAT geroutet werden muss man viel mehr machen.
Es wäre eine Portweiterleitung nötig.
Der Router müsste dann Anfragen die an die öffentliche IP-Adresse unter einem bestimmten Port eintreffen auf den entsprechenden Computer im Subnetz weiterleiten.

Gruß,
Martin C. C.
 
Hallo,

wir hatten hier vor kurzem auch schon einen längeren Thread zu dem Thema. Vielleicht kann dir der ja auch schonmal weiter helfen. Da wurde auch schon beschrieben, was man machen muss, wenn man 2 Rechner via Internet miteinander kommunizieren lassen will.

Click here.



Gruß
Der Wolf
 
Erstmal Vielen Dank für die schnellen Antworten

- Port: Ist vom Benutzer wählbar, haben schon unterschiedliche wie etwa 1234 oder 11111 ausprobiert
- TCP oder UDP: TCP
- Firewalls wurden beide ausgeschaltet
- Router-Firewall: Daran dachte ich auch als Fehlerquelle.. Und ich denke, dass beim Router eine Firewall vorhanden ist
- Portforwarding eingerichtet: Um ehrlich zu sein.. Keine Ahnung

Deaktivieren der Firewalls bzw. Freischalten des Ports werde ich später auch gleich mal ausprobieren.

Allerdings kann der Benutzer den Port selber einstellen (wurde mir auch im irc-Chat so geraten), was zur Folge hätte, dass er jedes Mal den Port neu freigeben müsste... Gibt es hier keine benutzerfreundlichere Lösung?
Ich kann mir vorstellen, dass sich dies mit UPnP realisieren ließe.. Hat jemand damit schon Erfahrung gesammelt?

Danke für den Link, den Thread habe ich bereits verfolgt, werde ihn mir aber nochmal durchlesen.


Gruß,
Martin
 
Hmmm,

also ich bin jetzt nicht sooo erfahren was Internet-Sicherheit etc angeht, aber frei wählbare Ports macht meiner Meinung nach ja eh nur Sinn, wenn der Server auf der Maschine einer Privatperson läuft, bzw der Server gestartet wird, wenn 2 Personen sich entscheiden zusammen zu zocken und einer den Server bereitstellt. In dem Fall kann man sich ja vorher darauf einigen immer den gleichen Port zu benutzen, dann muss man auch nur einmal den Port freigeben. In der Regel nimmt man doch eh die Standardports, die einem das Programm vorgibt und keine eigenen, oder?

Gruß
Der Wolf
 
[...]aber frei wählbare Ports macht meiner Meinung nach ja eh nur Sinn, wenn der Server auf der Maschine einer Privatperson läuft, bzw der Server gestartet wird, wenn 2 Personen sich entscheiden zusammen zu zocken und einer den Server bereitstellt.
So ist das Programm gedacht, ja
In dem Fall kann man sich ja vorher darauf einigen immer den gleichen Port zu benutzen, dann muss man auch nur einmal den Port freigeben. In der Regel nimmt man doch eh die Standardports, die einem das Programm vorgibt und keine eigenen, oder?
Das Programm gibt einem standardmäßig den Port "1234" an.
Für dieses recht simple Programm würde es wohl echt reichen, einfach bei beiden Rechnern den 1234-Port freizuschalten...

Bei komplexeren Anwendungen allerdings, bei welchen der Benutzer wirklich die Möglichkeit haben soll, den Port zu wählen, wird das wohl etwas zu umständlich für den User..
Da kommt dann wahrscheinlich UPnP zum Einsatz oder irre ich mich da?


EDIT: Ich hab mit der cmd.exe jetzt mal versucht, die IP anzupingen, die von der Seite www.wieistmeineip.de angezeigt wird. Dies funktioniert, allerdings klappt's via Java-Programm auch mit dieser IP nicht. Ist das überhaupt die Rechner-IP oder etwas anderes wie Router-IP?

Gruß,
Martin
 
Zuletzt bearbeitet:
Hallo,

wenn du von dir aus deine öffentliche IP-Adresse anpingst, dann funktioniert das meistens. Bei den Fritzboxen weiß ichs, die senden das Paket gar nicht erst raus, sondern erkennen dass es an sie adressiert ist. Wie das bei anderen Boxen ist, weiß ich nicht, sollte aber ebenso sein.

Desweiteren verwendet ein Ping-Befehl weder TCP noch UDP, es verwendet ICMP. Diese Nachrichten werden normalerweise von dem Router entgegen genommen und nicht ins LAN weitergeleitet.

Die IP-Adresse, die dir Seite wie wieistmeineip.de anzeigen, ist deine öffentliche IP-Adresse. Sprich, das ist die Adresse deines Routers.

Gruß
BK
 
Naja, ich hab die öffentliche IP-Adresse des anderen Rechners angepingt..
Die Verbindung scheint allerdings auch bis zum Rechner durchzugelangen oder kann das gar nicht sein?

Zu UPnP finde ich momentan an Jars bzw. Java-Hinweise... Zugegebenermaßen habe ich noch nicht sehr viel Zeit ins Suchen investiert, trotzdem präventiv mal die Frage: Gibt es hierzu noch andere Möglichkeiten oder jemanden, der sich damit auskennt, der mir dazu etwas helfen könnte?

Gruß,
Martin

PS: die nächsten Tage habe ich leider keine Möglichkeit, direkt zu antworten
 
Zurück