# Server an mehrere Clients



## Guest (10. Jul 2005)

Hi!

Ich weiß nicht, wie man eine Nachricht an mehrere Clients gleichzeitig schickt.

Kann mir das jemand schildern?

mfg. Martin


----------



## byte (10. Jul 2005)

z.b. durch gruppenkommunikation mit totally ordered multicast ...

sry aber so knapp wie die frage formuliert is, kann man sie nich beantworten. präzisiere!


----------



## Martin13 (10. Jul 2005)

Oh, sorry, ist echt verdammt kurz.

Also ich hab einen Server gebastelt. Dieser sollte an alle Clients eine Nachricht schicken. 
Jetzt wolllte ich fragen, obs nicht irgendeine Methode gibt, mit der man alle Sockets gleichzeitig ansprechen kann.
Ich kann ja mit "ObjectOutputStream(socket.getOutputStream())"  immer nur einen Socket und somit nur einen Client ansprechen.

Gibts da eine Möglichkeit?


----------



## byte (10. Jul 2005)

aha, socketprogrammierung... such mal in der API nach MulticastSocket


----------



## Martin13 (10. Jul 2005)

Gibts da keien einfachere Möglichkeit?


----------



## byte (11. Jul 2005)

multithreaded pro client eine connection und ein socket - also unicast, aber das is bei vielen clients nich sehr performant ... mehr fällt mir auch nich ein.


----------



## Martin13 (11. Jul 2005)

Okay danke!


----------



## Nick H. (11. Jul 2005)

wie viele Clients sind das denn?
wenns nur 2 oder so sind kannste ja wenn de es einfach haben willst einfach 2 Sockets nehmen


----------



## Martin13 (12. Jul 2005)

Das versteh ich ehrlich gesagt nicht. 

Das Problem liegt daran, dass ich immer nur einen Stream gleichzeitig von Server zu Client offen habe und somit immer nur immer an einen Client Daten schicken kann.


----------



## byte (12. Jul 2005)

habs doch oben schon geschrieben. schau dir mal threads an. idr implementiert man server so, dass wenn ein client zum server connectet, der server einen neuen thread aufmacht bevor die connection mit socket, stream etc aufgemacht wird. sonst könnte ja nur ein client gleichzeitig mit dem server connecten.




> Das Problem liegt daran, dass ich immer nur einen Stream gleichzeitig von Server zu Client offen habe und somit immer nur immer an einen Client Daten schicken kann.



so gehts halt nich.


----------



## Guest (12. Jul 2005)

Jop ich versteh dich. Ich habs sogar schon vorher mit Threads gemacht. Immer wenn ein neuer Server sich anmeldet, wird ein Socket geöffnet und ein Thread aufgemacht, sodass sich mehrere Clients gleichzeitig anmelden können. 
Mehrere Clients können so gleichzeitig Daten zum Server schicken, der Server kann aber trotzdem immer nur Daten an einen Client senden. 
Ist auch egal, ich habs mit einem MulticastSocket gelöst.
Kann mir noch wer erklären, wie ich einen ObjectInput bzw. ObjectOutputStream mit MulticastSocket verwende :?: 
Dann hätt ichs endlich geschafft.


----------



## byte (12. Jul 2005)

über multicastsockets werden datagramme per UDP verschickt, da gibts keine input- und ouputstreams.

siehe: http://java.sun.com/j2se/1.5.0/docs/api/java/net/DatagramPacket.html


ps: vor-/ nachteile von TCP/ UDP sind hoffentlich bekannt ...


----------



## Martin13 (12. Jul 2005)

Ich würd nur gerne ganz konkret wissen, wie man Ein-und Ausgabeströme für beliebige Objekte mit MultiCastSockets realisiert.
Bitte![/quote]


----------



## Roar (12. Jul 2005)

nee das geht nicht, du kannst nur DatagramPackets verschicken. um besten du lässt auch den objectstream quark, das kann _sehr_ schnell in die hose gehen.
du könntest dir alternativ eine art software-multicast-server bauen, indem du einfach eine klasse bereit stellst, der du mehrere sockets/outputstreams übergeben kannst und dann mit einer methode an alle outputstreams das gleiche rausschreibst.


----------



## dyrathror (12. Jul 2005)

Kleine Anmerkung zur Multicast Kommunikation:

Router haben das Blocken sämtlichen Multicast Verkehrs als default Einstellung.

Wenn also einer Deiner Clients außerhalb des Netzsegmentes Deines
Servers liegt bekommt er normalerweise keine Daten per Mulitcast, es sei denn
der Multicast Adresse die Du nutzt wird auf dem Router freigeschaltet.


----------



## Martin13 (12. Jul 2005)

Okay danke ich werds probieren.

Multicasts sind also totaler schrott...


----------

