|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[JAVA]UDP Multicast
Raga sto cercando di fare un multicast con il protocollo udp per inviare un datagram a tanti utenti in una volta sola.
Ho provato diverso codice ma non va, il client non riceve. Non è che il problema è che lo testo in locale? |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
Quote:
se per locale intendi sulla tua macchina la risposta è si. Se invece intendi sulla tua LAN (con locale intesa come non connessa ad internet), il problema credo sia nel codice, a meno che il tuo router nn sia in grado di gestire i gruppi multicast. ciao EDIT: dimenticavo, se posti il codice ci togliamo anche qualke dubbio Ultima modifica di The3DProgrammer : 15-07-2006 alle 01:04. |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ciao, io intendo propria sulla stessa macchina(ho un solo pc
Io sto utilizzando pèer la prima volta questo protocollo e quindi devo sempre testare cioè che scrivo, non posso rompere le palle sempre a qualcuno... A scanso di equivoci il codice è molto semplice ed è questo: MULTICAST SENDER (SERVER) Codice:
import java.net.*;
import java.io.*;
public class MulticastSender
{
public static void main( String[] argv )
{
try
{
// get the InetAddress of the MCAST group
InetAddress ia = InetAddress.getByName("228.5.6.7");
// get the port that we will be listening on
int recvPort =6789;
// create a datagram with a suitable message
String str = "Hello from: "+InetAddress.getLocalHost();
byte[] data = str.getBytes();
DatagramPacket dp = new DatagramPacket(data, data.length, ia, recvPort);
// create a multicast socket bound to any local port
MulticastSocket ms = new MulticastSocket();
//Join the multicast group
ms.joinGroup(ia);
// send the message with a Time-To-Live (TTL)=1
ms.send(dp, (byte)1);
// tidy up - leave the group and close the socket
ms.leaveGroup(ia);
ms.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
Codice:
import java.net.*;
import java.io.*;
public class MulticastReceiver
{
public static void main( String[] argv )
{
try
{
// get the InetAddress of the MCAST group
InetAddress ia = InetAddress.getByName("228.5.6.7");
// get the port that we will be listening on
int port = 6789;
// create a multicast socket on the specified local port number
MulticastSocket ms = new MulticastSocket( port );
// create an empty datagram packet
DatagramPacket dp = new DatagramPacket(new byte[128], 128);
//Join a multicast group and wait for some action
ms.joinGroup(ia);
System.out.println( "waiting for a packet from "+ia+"...");
ms.receive(dp);
// print out what we received and quit
System.out.println( new String(dp.getData() ));
ms.leaveGroup(ia);
ms.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
il codice mi sembra corretto, ad okkio. Che io sappia non puoi testarlo sul tuo host ma necessiti di un router (almeno nei progetti che ho realizzato in cui ho usato multicast ho fatto così) che supporti i gruppi multicast. Cmq a scanso di equivoci googla un po per vedere se trovi una soluzione
ciauz |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Puoi usare qemu:
http://fabrice.bellard.free.fr/qemu/ in modo da avere una macchina virtuale con cui comunicare. Di solito lo uso per testare applicazioni Java RMI. A proposito, java rmi e' di piu' alto livello, non dovresti preoccuparti del protocollo.
__________________
|Java Base| |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Che immagine di OS mi consigli di usare? basta anche il Freedos?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ma poi non ho capito una cosa, utilizzando questo metodo, è SICURO che andrà sempre o dipende dal sistema operativo, dal modem, dalla rete?
Se si tratta di una rete locale c'è caso che non vadi? Se invece si parla di internet va sempre? Non ho ben capito...perchè altrimenti non perdo tempo a cercare di testare il codice multicast, ma me lo scrivo io una sorta di multicast. Quello che devo fare tanto penso si possare fare anche senza multicast, in pratica ho un server e diversi client, i client mandano i loro dati al server il quale li spedisce a tutti i client connessi, non credo sia difficile da fare anche senza multicast. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
Quote:
ps. xlovaz: tra l'altro nn è necessario usare 2 macchine x testare programmi che usano RMI, basta avviare + server sulla stessa macchina su porte diverse ciauz |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
Quote:
riesci a provare con una macchina linux? almeno abiliti facilmente il multicast, usando windows come router non so se funziona... ci sarà il modo, ma non lo conosco |
|
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Sep 2005
Messaggi: 114
|
Quote:
Se provi su internet il codice che hai scritto non ti andra' mai perche' hai settato il TimeToLive a 1 |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Quote:
per vedere come va in presenza di firewall, per esempio, o se l'hostname è settato correttamente con rmid, rmiregistry, ecc. Comunque uso frodo, o damn small se mi serve la grafica. Non credo esista java per freedos.
__________________
|Java Base| |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2000
Messaggi: 1459
|
Quote:
c'hai ragione |
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Se ho capito bene se devo realizzare un'applicazione per INTERNET non posso usare il multicast? Serve solo per le LAN? Volevo chiarare questa cosa... |
|
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
Quote:
ad esempio rosso alice usa multicast, sempre se ricordo bene l'ip che ho visto |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:58.











|








