Java Programm auf Linux Server Laufen lassen

Jurij

Mitglied
Hallo,

Ich habe mich bei Amazone Web Services angemeldet und habe dort einen Linux Server erstellt. Dann habe ich ein Java Programm hochgeladen, was auf eine eingehende TCP-Verbindung wartet. Ich habs gestartet und einen Client auf meinem Heimrechner gestartet, der sich damit verbinden soll. Das geht aber nicht. Ich habe keinerlei Erfahrung mit dem Hosten von Java Applikationen und auch nicht mit Linux Servern. Kann mir jemand helfen, ob ich da etwas bestimmtes einstellen muss, Ports freigeben, weiterleiten oder ähnliches? Es gibt hier sicher schon einen Thread dazu aber ich habe nix passendes gefunden.

Vielen Dank schon mal im Vorraus
Jurij
 
Ich hab gefunden woran es liegt. Es lag daran, dass Amazon selbst noch die Ports anscheinend blockt und man kann es unter Security Group einstellen, welche Ports freigegeben werden. An sich war das ganz simpel, aber es hat einfach lange gedauert das zu finden. Eine weitere Frage oder sollte ich einen neuen Thread dafür aufmachen? Es geht darum, dass ich ja 2^16 (65535) verschiedene Ports habe. Dadurch kann ich also nur mit so vielen Clients gleichzeitig verbunden sein. Was mache ich, wenn ich mehr brauche? Verwaltet so ein Server das selbst? Muss ich mir weitere IP Adressen beantragen? Oder muss ich mehrere Server laufen lassen und sie dann auch noch miteinander kommunizieren lassen?
 
Es geht darum, dass ich ja 2^16 (65535) verschiedene Ports habe. Dadurch kann ich also nur mit so vielen Clients gleichzeitig verbunden sein.

Nein.
Dein Server-Prozess - also Dein Java-Programm - muss nur auf einen Port horchen. Meinetwegen beispielsweise 9090.
Alle Clients verbinden sich dann über Port 9090 mit Deiner Applikation.
Etwas vereinfacht gesagt sorgt das Betriebssystem des Servers dafür, dass die Antworten Deiner Applikation an den "richtigen" Client geschickt werden.


Anderes Beispiel: Webserver.
Der horcht nur auf Port 80 und alle Clients (=Browser) benutzen diesen einen Port, um mit dem Webserver zu kommunizieren.
 
Dein Programm lauscht auf EINEN Port, kann aber mit mehreren Clients gleichzeitig kommunizieren.

Die Anwendung selbst muss dann regeln wie mit mehreren Verbindungen umgegangen wird -> Multithreading, Multiuser Anwendungen usw.
Das wäre aber wieder ein eigenes Thema
 
Das war mir bewusst. Aber ich dachte, dass ich ja beim Aufrufen von accept ja die Verbindung in einem neuen Socket speicher und dieser einen anderen Port belegt. Also muss ich mir keine Gedanken darüber machen, dass es zu viele Verbindungen werden könnten. Zumindest in meinem Programm. Ich werde jede Verbindung mit einem eignen Thread abarbeiten lassen. Danke für die Hilfe 🙂
 

Zurück
Oben