Thread IO::Socket Server, der mehrere Clients simultan "bedient" (3 answers)
Opened by FoolAck at 2008-08-17 16:39

FoolAck
 2008-08-17 16:39
#113601 #113601
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Ja also die Idee ist quasi sowas wie einen Chat mit IO::Socket zu machen. Allerdings kann sich ja immer nur ein Client auf den Server-Socket verbinden. Wie könnte man beliebig viele Clients ermöglichen und das ganze ohne blockende Stellen realisieren?
IO::Event und IO::Select klingen teilweise ganz interessant, aber ich komm grade nicht damit weiter....
Es wäre auch nett, wenn mir einer kurz sagen könnte, was denn bitte $socket->blocking(0) macht. Was blockt dann nicht mehr?

Threads will ich nicht benutzen und fork() fällt auch weg, weil ich alle von den Clients zum Server geschickten Daten in eine Datenstruktur packen möchte.

In Worten: Der Server soll alle Daten von allen Clients für alle anderen Clients sichtbar machen. (Halt wie im chat auch.)
Sprich clientA und clientB verbinden sich zum Server. clientA schreibt "foo". Jetzt soll der Server clientB (und allen anderen clients) diese Nachricht schicken.

Gibts da irgendeine "offensichtliche" Lösung, die mir noch nicht klar geworden ist?
Oder ist das nur mit threads möglich?

//Edit: grade das hier gefunden. Werde es mal studieren...
//Edit2: Hm, irgendwie ist das recht buggy und etwas unsauber gecodet. (Kein strict....) Ich habe ne strict Version versucht, aber da noch nichtmal bei der "nicht-strict" Version das broadcasten ordentlich funktioniert (teiweise zumindest), weiß ich nicht, ob ich mir das jetzt unbedingt antun will... Ich bin immernoch für Vorschläge offen.
//Edit3: Oha, völlig falsches Forum :X
Man verschiebe mich ins Netzwerk-Ghetto.
Und laut diesem Thread hier sollte es wohl irgendwie mit IO::Select möglich sein. Hm.

View full thread IO::Socket Server, der mehrere Clients simultan "bedient"