# MulticastSocket und Gruppenkommunikation



## igor99 (16. Mrz 2006)

Wenn ich eine Gruppenkommunikation mit TCP-Sockets realisieren möchte, muss ich einen Server programmieren. Wenn ich aber MulticastSocket benutze, muss ich das nicht (brauche keinen Server). Da die Clients Mitglieder der Gruppe sind, können sie auch ohne Vermittler miteinander kommunizieren. 

Der Einzige Vorteil bei der Variante mit dem MulticastSocket-Server, den ich im Moment sehe, ist der, dass ich mit einem Server das Empfangen von Nachrichten, welche über einen TCP-Socket gesendet wurden, realisieren kann. Oder, sehe ich das falsch?
Danke


----------



## byte (16. Mrz 2006)

igor99 hat gesagt.:
			
		

> Der Einzige Vorteil bei der Variante mit dem MulticastSocket-Server, den ich im Moment sehe, ist der, dass ich mit einem Server das Empfangen von Nachrichten, welche über einen TCP-Socket gesendet wurden, realisieren kann.



Kein Wort verstanden.

Wenn Du Multicast Sockets verwendest, hast Du halt eine 1:N Beziehung. Das heisst Du schickst eine Nachricht gleichzeitig an eine Menge von Empfängern, nämlich alle, die der entsprechenden Gruppe angehören. Ohne Multicast müsstest Du die Nachricht N mal abschicken, an jeden Teilnehmer eine Nachricht. So schickst Du eine Nachricht und jeder Teilnehmer erhält sie.

Anschauliches Beispiel: Ein Chat! Du schickst eine Nachricht in den Chat und jeder Teilnehmer des Chats kann die Nachricht sehen. Allerdings brauchst Du für die Realisierung im Internet eine Class D IP-Adresse.

Was war nun deine konkrete Frage/ Dein Problem?


----------



## Guest (16. Mrz 2006)

> Was war nun deine konkrete Frage/ Dein Problem?


Ich habe eine Applikation implementiert, welche die Gruppenkommunikation mit MulticastSocket realisiert. Ein Server ist hier nicht nötig. Meine Frage ist: Könnte man sich eine Situation vorstellen, in welcher ein solcher Server doch von Nutzen wäre? Könnte ich in dieser speziellen Situation etwas mit dem Server machen, was ohne Server nicht gehen würde?

Das war meine Frage. Ich hoffe, dies mal ist diese etwas verständlicher.


----------



## Stiewen (17. Mrz 2006)

Hi Igor99,

meiner Meinung nach blockiert doch der Befehl MulticastSocket.receive();, oder???

Also wäre es also nicht möglich auf eine Nachricht zu warten und gleichzeitig noch was zu senden...
Wenn dies so ist, musst du mindestens 2 Threads haben.

Der Thread auf dem du die Nachricht empfängst, dürfte dem zufolge deine Server sein. Somit versteh ich nicht, warum du denkst, dass du keinen Server hast.

Wenn dies nicht der Fall ist, dass du mindestens 2 Threads hast, 
1. so schicke uns doch bitte mal den Source und 
2. würde ich sagen, dass du auf dem Server, den du erstellen könntest Funktionen, wie Abmelden, Anmelden, Abwesend gesetzt, brb gesetzt... bearbeiten könntest.

MfG Stiewen


----------



## igor99 (28. Mrz 2006)

Hallo "byto"



> meiner Meinung nach blockiert doch der Befehl MulticastSocket.receive();, oder???


Das ist richtig. Und es ist auch richtig, dass ich jeweils zwei Threads haben muss: Sender und Empfänger.  

Mit dem "Server" habe ich eine separate Komponente gemeint, welche auf einer beliebigen Maschine läuft und die angekommene Nachrichten an alle andere Teilnehmer verteilt (sendet). Beispielsweise, wenn ich mit TCP-Sockets eine Gruppenkommunikation (Chat) realisieren würde, müsste ich einen solchen Server haben. Also, der Server ist in diesem Kontext eine "Verteiler-Komponente". Jedoch muss auch in diesem Fall jeder Client zwei Threads haben: Sender und Empfänger. 

Mit MulticastSockets fällt diese "Verteiler-Komponente", die ich Server nene, weg. Oder, gebe es solche Situationen, in denen eine solche "Verteiler-Komponente" sinnvoll eingesetzt werden kann, um etwas zu erreichen, was ohne sie nicht möglich wäre? Denn, An- und Abmelden kann man bei MulticastSockets, meiner meinung nach, auch ohne diese Verteiler-Komponente realisieren.

Vielen Dank und Gruss


----------

