Multicast

Hallo,

ich bin gerade ein Multicast-Test zu durchführen, dafür habe ich die Classe MulticastServer.java und MulticastClient.java gebraucht.

Nach dem Start vom MulticastServer wartet er auf data vom MulticastClient.
Das Problem ist, dass das Server keine Daten bekommt wenn der Client startet und data sendet. Was mache ich falsch?

// Datei: MulticastServer.java

import java.net.*;
import java.io.*;

public class MulticastServer
{
// IP-Adresse der Gruppe
static String groupAddress = „224.5.6.7“;
// Port der Gruppe
static int port = 6789;

public static void main (String[] args)
{
try
{
// Erzeugen eines Puffers zum Empfang von Anfragen
byte[] buffer = new byte[128];
DatagramPacket packet =
new DatagramPacket (buffer, buffer.length);
InetAddress address = InetAddress.getByName (groupAddress);

// Erzeugen einer Socket
MulticastSocket socket = new MulticastSocket (port);

// Beitritt zu Multicast-Gruppe
socket.joinGroup (address);

while (true)
{
// Empfang einer Anfrage
socket.receive (packet);

// Extraktion und Ausgabe der Anfrage
String message = new String (packet.getData(),
0, packet.getLength());

System.out.println ("Nachricht empfangen: " +
message + " von " +
packet.getAddress ());

// Beantworten der Anfrage
message = „response“;
DatagramPacket response =
new DatagramPacket (message.getBytes(),
message.length(),
packet.getAddress(),
packet.getPort());
socket.send (response);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

// Datei: MulticastClient.java

import java.net.*;
import java.io.*;

public class MulticastClient
{
// IP-Adresse der Gruppe
static String groupAddress = „224.5.6.7“;
// Port der Gruppe
static int port = 6789;
public static void main (String[] args)
{
try
{
// Verpacken der Anfrage in ein Paket
InetAddress address = InetAddress.getByName (groupAddress);
byte[] message = „look up“.getBytes();
DatagramPacket packet = new DatagramPacket (message,
message.length,
address, port);
// Erzeugen einer Socket und senden der Anfrage
MulticastSocket socket = new MulticastSocket();
socket.send (packet);

// Erzeugen eines Puffers
byte[] b = new byte[128];
packet.setData (b);
packet.setLength (b.length);

// Empfang der Antwort
socket.receive (packet);

// Extrahieren der Antwort und Ausgabe der Informationen
String response = new String (packet.getData(),
0, packet.getLength());

System.out.println ("Antwort empfangen: " +
response + " von " +
packet.getAddress());

// Schliessen der Socket
socket.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

Gruss.
Hicham

Moien

ich bin gerade ein Multicast-Test zu durchführen, dafür habe
ich die Classe MulticastServer.java und MulticastClient.java
gebraucht.

Muss es Multicasting sein und ist dir klar was dabei rauskommen kann ?

Wenn man es nur mit LANs und einem einzigen Subnet zu tun hat sind Boardcasts deutlich einfacher und schneller zu realisieren.

static String groupAddress = „224.5.6.7“;

Die IP ist nach aktuellem Stand „reserved“, d.h. die sollte nicht benutzt werden. Versuchs lieber mit „224.0.0.1“.

cu

Moien

ich bin gerade ein Multicast-Test zu durchführen, dafür habe
ich die Classe MulticastServer.java und MulticastClient.java
gebraucht.

Muss es Multicasting sein und ist dir klar was dabei
rauskommen kann ?

Ja, weil ich möchte nur eine bestimmte Geräte ansprechen und nicht alle.

Wenn man es nur mit LANs und einem einzigen Subnet zu tun hat
sind Boardcasts deutlich einfacher und schneller zu
realisieren.

Warum?

static String groupAddress = „224.5.6.7“;

Die IP ist nach aktuellem Stand „reserved“, d.h. die sollte
nicht benutzt werden. Versuchs lieber mit „224.0.0.1“.

Mit „224.0.0.1“ habe ich versucht und wird auch immer keine Daten
gesendet

cu

Moien

Wenn man es nur mit LANs und einem einzigen Subnet zu tun hat
sind Boardcasts deutlich einfacher und schneller zu
realisieren.

Warum?

Weil Multicasts nix anders sind als Boardcasts mit zusätzlichen Flags. Die Flags werden von vielen Betriebsystemen anders interpretiert als es der Fall sein soll (windows weiss z.B. nicht auf welchem Netzwerkinterface es den Multicast absetzen soll). Manche Router und sogar einige Switche versagen beim Multicast. Es funktioniert real auch nur auf einem Subnetz.

Kurzum: man handelt sich einen Ar**** voll Probleme ein für einen an sich triviale Aufgabe.

Die IP ist nach aktuellem Stand „reserved“, d.h. die sollte
nicht benutzt werden. Versuchs lieber mit „224.0.0.1“.

Mit „224.0.0.1“ habe ich versucht und wird auch immer keine
Daten gesendet

windows 2000 / NT 4.X ?

cu

Hi,

Weil Multicasts nix anders sind als Boardcasts mit
zusätzlichen Flags. Die Flags werden von vielen
Betriebsystemen anders interpretiert als es der Fall sein soll
(windows weiss z.B. nicht auf welchem Netzwerkinterface es den
Multicast absetzen soll). Manche Router und sogar einige
Switche versagen beim Multicast. Es funktioniert real auch nur
auf einem Subnetz.

Alles klar

Die IP ist nach aktuellem Stand „reserved“, d.h. die sollte
nicht benutzt werden. Versuchs lieber mit „224.0.0.1“.

Mit „224.0.0.1“ habe ich versucht und wird auch immer keine
Daten gesendet

windows 2000 / NT 4.X ?

Ja, und momentan teste ich unter windows XP und kriege ich das gleich Problem

cu

Hicham