Ein Thread pro Socket?

Hi,

ich möchte eine Serveranwendung programmieren.
Dabei gehe ich davon aus dass durchaus mehrere hundert bis tausend User gleichzeitig eine Verbindung zum Server offenhaben werden.

Nun frage ich mich, ob ich zu jedem Socket, dass ich am Server offen habe einen eigenen Thread habe, der „hört“ ob eine Nachricht ankommt oder ob ich mehrere Connections in einem Thread irgendwie abarbeiten kann (nacheinander?) und schauen wo gerade was passiert.

Ich frage mich dabei auch ob es irgendein limit an Threads gibt, was ein Betriebssystem mitmacht.

Falls es von bedeutung ist: Realisieren will ich das ganze unter Linux in Java oder C (mit POSIX Threads).

MfG Bruno Haller

Moin,

Nun frage ich mich, ob ich zu jedem Socket, dass ich am Server
offen habe einen eigenen Thread habe, der „hört“ ob eine
Nachricht ankommt oder ob ich mehrere Connections in einem
Thread irgendwie abarbeiten kann (nacheinander?) und schauen
wo gerade was passiert.

Pro Verbindung einen Thread ist bei Java ideal. Hast Du Verbindungen? Ist mit längeren Timeouts zu rechnen?

Von POSIX weiß ich wenig.

Thorsten

Pro Verbindung einen Thread ist bei Java ideal. Hast Du
Verbindungen? Ist mit längeren Timeouts zu rechnen?

ok, aber gibt es keine Probleme bei einer gewissen Anzahl von Threads? Ich traue mich irgendwie nicht ein programm mit 1000 Threads oder so laufen zu lassen :wink:
Die Verbindung zwischen Client und Server ist permanent da, bis der User das Programm schliesst oder die Verbindung abbricht.

Was meinst du mit längeren Timeouts? Idlen darf der User schon, so lange die Verbindung da ist ist alles ok, sobald die Verbindung geschlossen wird oder abreisst is vorbei.

Von POSIX weiß ich wenig.

Wär bei einer Java-Lösung auch nicht nötig.

Gruß
Bruno

Moin,

Pro Verbindung einen Thread ist bei Java ideal. Hast Du
Verbindungen? Ist mit längeren Timeouts zu rechnen?

ok, aber gibt es keine Probleme bei einer gewissen Anzahl von
Threads? Ich traue mich irgendwie nicht ein programm mit 1000
Threads oder so laufen zu lassen :wink:

Mit „ideal“ meinte ich auch wirklich nur eine Musterlösung. Wie groß die Last dann wird, kann ich nicht abschätzen.
Ich kann mir nicht vorstellen, daß Java die Zahl der Threads beschränkt. Das würde ich rasch mal testen, um weiter planen zu können.

Die Verbindung zwischen Client und Server ist permanent da,
bis der User das Programm schliesst oder die Verbindung
abbricht.

OK, dann würde ein Objekt pro Verbindung die Sache auf jeden Fall erleichtern. Das hängt natürlich aber von der Nutzlast ab; wenn viele Clients immer die gleiche Antwort bekommen, kann es anders aussehen.

Was meinst du mit längeren Timeouts? Idlen darf der User
schon, so lange die Verbindung da ist ist alles ok, sobald die
Verbindung geschlossen wird oder abreisst is vorbei.

Idle meinte ich auch, nicht Timeouts. Schön, dann blockieren die Threads und verbrauchen nur Speicher.

Thorsten