Wie kann ich eine Client Server Verbindung in Java aufbauen?

1 Antwort

Java kann auf einem Port lauschen oder Pakete an einen Port versenden.

Bei beidem kann die Firewall dazwischenfunken, je nach Konfiguration. Ebenfalls kann es sein, dass der Port bereits durch eine andere Applikation besetzt ist.


QuirinK13 
Beitragsersteller
 26.07.2022, 17:03

Ein Freund nannte mir den Begriff Reverse SSH, kann das die Lösung sein?

1
Destranix  26.07.2022, 17:22
@QuirinK13

Wenn du das Problem schilderst könnte ich dir deine Frage evtl. beantworten.

Wenn es darum geht, dass die lokale Firewall verhindert, dass der Server seine Verbindung auf einen nicht slebst geöffneten Port aufbaut, dann kann man das umeghenen ähnlich, wie das beim Passive-Mode von FTP der Fall ist, dass der Server dem Client sagt, welchen Port dieser verwenden soll und dann der Client die Verbindung aufbaut.

Reverse-SSH funktioniert wohl ähnlich.

0
QuirinK13 
Beitragsersteller
 26.07.2022, 19:14
@Destranix

Im Grunde ist es sowas. Wenn man ein Online Computer Spiel spielen möchte, öffnet der User ja auch nicht manuell einen Port.

Bei meinem Programm handelt es sich um ein Spiel, das mit Java programmiert wurde. Dort soll ein Lizenzsystem eingebaut werden.

Die Idee ist, dass jede 30 Sekunden ein Paketaustausch des Servers mit dem Client passiert, in dem überprüft wird, ob die Lizenz existiert, der User gebannt oder die Lizenz ausgelaufen ist. In beiden Fällen wird der Client im schlimmsten Fall einen Sperrscreen mit dem Grund beim erneuten Start des Spiels sehen und weiter als das wird man nicht kommen.

  • Der einfache Part ist der Weg vom Client zum Server. Ich kann beim Server ganz einfach einen beliebigen Port öffnen und den im Client fest hinterlegen. Der Client sendet das Paket an den Server.
  • Sobald der Server das Paket erhält, soll dieser ein Paket zurück an den Client mit den Lizenzinformationen senden. Dieser Part wird aber schwieriger, da der Port nicht einfach fest in den Server geschrieben werden kann, da nicht jeder User diesen Port freigeschaltet hat. Hier fehlt im Grunde die Lösung
1
Destranix  26.07.2022, 19:30
@QuirinK13

Du baust dir ein Scoket und arbeitest darüber. Eventuell nutzt du das erste Socket auch nur zum verbindungsaufbau, weist dem Client einen Port zu, über den er sich für das eigene Verbindungssocket an den Server wenden soll.

Über das Socket hast du dann Input- und OutputStream.

Es gab auch irgendwie Sockets und ServerSockets, was da genau der Unterschied ist weiß ich aber gerade nicht.

0
Destranix  26.07.2022, 19:33
@QuirinK13

Okay, ServerSocket ist für die Serverseite ausgelegt, Socket für die Clieneite.

0