2016-06-12 9 views
1

Ich habe ein Spiel in JAVA geschrieben. Es hat zwei Spieler, einer wird der Server sein.So kommunizieren Sie direkt mit einem externen Client mit IP und Port

Ein Computer erstellt das Spiel und dient es. Ein anderer Computer (außerhalb) muss sich mithilfe seiner IP und seines Ports mit dem Server verbinden. Wenn sie sich verbinden, startet das Spiel und der Client-Spieler sendet seine Züge an den Server, die Bewegungen werden dort berechnet und die neuen Client- und Server-Positionen in der Spielkarte werden zurückgegeben und aktualisiert.

Das Problem ist: Wenn ich das Spiel Localy, den Server und den Client im selben Router, mit lokalen IP erstellen, startet das Spiel erfolgreich. Aber wenn ich das Spiel erstelle und versuche, mich von einem externen Computer aus zu verbinden, wird der Server nicht gefunden.

Ich lese ein bisschen und das Problem ist wahrscheinlich die Computer-Firewall oder Router NAT (was ich nicht zu viel verstanden habe). Nun, ich habe etwas namens STUN gefunden, dort steht, dass es die Firewall- und Routerblockierung mit einem STUN-Server umgeht und auch eine Liste mit freien STUN-Servern (here) gefunden hat. Aber ich weiß nicht, was ich damit machen soll. Die STUN-Server ermöglichen die Server- und Client-Kommunikation?

Es ist möglich, ohne Online-Service zu kaufen, und mit den zwei Spielern Computer (der Server-Player und Client-Player), erfolgreich Verbindung ohne Portfoward oder Firewall deaktivieren?

Ich möchte mein Spiel teilen, aber ich kann nicht jeden Spieler bitten, ihre Firewall zu deaktivieren. =/

+1

Sie müssen Portweiterleitung/Firewall nur serverseitig konfigurieren. Kunden müssen nichts Besonderes tun. – gudok

+0

Dies ist eine Frage über Netzwerke und Netzwerkkonfiguration, nicht Programmierung. Es ist off-topic. –

Antwort

2

Für die direkte (Peer-to-Peer) Kommunikation, wenn Sie den Server irgendwo im Netzwerk platzieren möchten (besonders hinter NAT), müssen Sie Black-Magic-Techniken wie "NAT Traversal" verwenden.

Viele Details dazu sind im Artikel Peer-to-Peer Communication Across Network Address Translators beschrieben. Von dort benötigen Sie den Abschnitt "TCP-Lochung".

Trotzdem funktioniert NAT Traversal nicht in allen Fällen (es gibt immer Ausnahmen, wenn NAT nicht wie erwartet von Traversal-Algorithmus funktioniert). Der beste Weg, um alle Probleme zu lösen, ist, einen dedizierten Server irgendwo mit einer öffentlichen IP-Adresse zu platzieren und ihn zu benutzen.

Verwandte Themen