Auf Thema antworten

Nein. Nur wenn du ein ganz ineffizientes Programm (mega ineffizient!) schreiben willst, erstellst du für jede Verbindung einen eigenen Thread.

Wenn du viele Verbindungen offen hälst, wird das Programm sogar deinen ganzen Rechner auslasten, da jeder Thread Overhead bedeutet.

Stattdessen solltest du auf Executor Services / Thread Pools zur Bearbeitung setzen!


Nun zu deinen Fragen:

1. Es gibt nur 1 offenen Server Port, aber es gibt auch noch Client Ports. Du verwechselst das also gerade.

Für dich sind aber nur der Server Port relevant, um den Client Port musst du dich normalerweise nicht kümmern.


Auszug aus Wikipedia:


Quelle: https://de.wikipedia.org/wiki/Port_(Protokoll)

2. Da du nur einen offenen ServerSocket benötigst, hat sich diese Frage damit auch erledigt, oder?


Btw, es gibt Libraries für sowas, z.B. Netty oder vertx.io, die dir diese Arbeit abnehmen.

Da du anscheinend noch nicht so viel mit Networking zu tun hattest, solltest du dich der Einfachheit halber auf Vertx.io konzentrieren.

Ich habe dazu mal ein Tutorial geschrieben, wie man einen Chat Server + Client mit vertx.io in relativ kurzer Zeit realisieren kann:

  - Teil 1: http://jukusoft.com/2016/10/26/tutorial-chat-server-java/

  - Teil 2: http://jukusoft.com/2016/10/26/tutorial-chat-server-java-teil-2/


Sowohl Netty, als auch vertx.io sind High Performance Networking Libraries, also für sehr viele Verbindungen ausgelegt.



Oben