Newsgroup: it.comp.java
Titolo: Multicast UDP...

Salve sto creando una classe che deve utilizzare un multicast UDP.
Tento di creare due classi che comunicano in multicast ma in realtà le
due classi non comunicano!!
può darsi che il problema sia dato dal fatto che sto lavorando da casa
e la mia rete non supporta questo tipo di comunicazione?
grazie

Ciao. Secondo me non può funzionare perchè gli indirizzi ip di tipo
multicast sono privati e quindi non credo che tu possieda un ip
multicast sul quale far sottoscrivere possibili host...
Elbrethril ha scritto:


 e la mia rete non supporta questo tipo di comunicazione?
Dipende dove stai cercando di far funzionare questo multicast... se e' su due (o piu' pc) di una stessa sottorete, allora non ci sono problemi (io lo facevo nei laboratori dell'universita').
Se invece stai cercando di far multicast fra un pc a casa tua e un altro "fuori", ovvero passando attraverso internet, sicuramente non ti funzionera'.
Saluti
CarMas

 Se invece stai cercando di far multicast fra un pc a casa tua e un altro "fuori", ovvero passando attraverso internet, sicuramente non ti funzionera'.
Stavo provando di farlo funzionare su uno stesso pc. però ora non
potendo andare in facoltà provavo a casa...
ma mi sa tanto che lo devo fare in facoltà!!

Ho provato in facoltà... però non capisco perchè, ma la
comunicazione funziona soltanto una volta ogni tanto.. ma tanto, e non
credo che il problema sia da attribuire alla perdita dei pacchetti....
sapreste aiutarmi..
posto il codice con cui lavoro.
                        MulticastSocket ms = new MulticastSocket(Port);
			DiscoveryMessaggio m = new
DiscoveryMessaggio(DiscoveryMessaggio.DISCOVERY,
InetAddress.getLocalHost().getHostName());
			DatagramPacket dp = new DatagramPacket(m.getBytes(),
m.length(),Group, Port);
			ms.send(dp);
System.out.println("GD: inviato!"+Port+" "+Group);
			boolean ciclo = true;
			while (ciclo)
			{
				int MAXBYTE = 1024;
				byte [] buffer = new byte[MAXBYTE];
				dp = new DatagramPacket (buffer, MAXBYTE);
				ms.setSoTimeout(5000);
				try {
					ms.receive(dp);
				}catch (SocketTimeoutException e) {
					ciclo = false;
					break;
				}
                              System.out.println("GD: Ricevuta
risposta1");
e dall'altro lato.
		MulticastSocket ms;
		try {
			ms = new MulticastSocket(portaMulticast);
			ms.joinGroup(multicastGroup);
			System.out.println("RS: effettuata la join");
			int MAXBYTE = 1024;
			byte [] buffer = new byte[MAXBYTE];
			DatagramPacket dp = new DatagramPacket (buffer, MAXBYTE);
			ms.receive(dp);
			System.out.println("RS: ricevuto"+dp);
			DiscoveryMessaggio m = new DiscoveryMessaggio(dp.getData(),
dp.getLength());
			if (m.getType() == DiscoveryMessaggio.DISCOVERY) {
				System.out.println("Messaggio di discovery OK, mando risposta a
"+multicastGroup+" porta "+portaMulticast);
				DiscoveryMessaggio ack = new
DiscoveryMessaggio(DiscoveryMessaggio.ACK,
InetAddress.getLocalHost().getHostName());
				DatagramPacket dp1 = new
DatagramPacket(ack.getBytes(),ack.length(),multicastGroup,portaMulticast);
				ms.send(dp1);
				System.out.println("Risposta inviata");
			}
		}catch (Exception e) {e.printStackTrace();}
Grazie mille!