2016-07-30 23 views
0

Ich entwickle gerade ein Online-Spiel. Innerhalb des Spiels ist es notwendig, Daten vom Server über TCP und UDP an die Clients zu senden. UDP-Lochen Die Implementierung ist einfach, aber ich bin nicht wirklich sicher, wie TCP-Lochen zu implementieren:Java TCP Hole Punching

  1. Server: Serversocket auf bestimmten Port lauscht 1
  2. Auftraggeber: Socket (Objekt) eine Verbindung zum Server auf Port 1 über Port 2
  3. Sobald die Verbindung hergestellt ist, behält der Server das Socket-Objekt von server.accept() und verwendet es, um Daten für die verbleibende Zeit an den Client zu senden
  4. Sobald die Verbindung hergestellt ist, wird der Client geschlossen sein Socket-Objekt und öffnet eine ServerSocket an Port 2. Der Server kann nun Daten mit einem Socket-Objekt an Port 1 an Port 2 senden.

Ist 3. oder 4. der richtige Weg?

Antwort

1

Option 3.

Option 4 nicht, weil nicht funktioniert, wenn der Client Sie die Buchse beiden Seiten geschlossen wird geschlossen. Der Server müsste die Verbindung über die NAT-Firewall initiieren, was eindeutig nicht funktioniert.