Suggerimenti:
/sbin/ifconfig.
Il comando da' come uscita:
/sbin/ifconfig eth0Fra le altre cose, il comando elenca l'indirizzo di broadcast per la sottorete (seconda riga
eth0 Link encap:Ethernet HWaddr 00:01:02:1C:7D:6B
inet addr:131.114.11.190 Bcast:131.114.11.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:85673 errors:0 dropped:0 overruns:1 frame:0
TX packets:68014 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:41038274 (39.1 Mb) TX bytes:15743115 (15.0 Mb)
Interrupt:11 Base address:0x6800
Bcast: 131.114.11.255
).
Generalmente l'indirizzo broadcast è composto dal numero di rete
e da tutti uno al posto del numero di host. Utilizzare il metodo setBroadcast di DatagramSocket (da JDK 1.4) per
abilitare l'invio di pacchetti in broadcast.InetAddress group = InetAddress.getByName("230.0.0.1");In questo esempio viene inviato un pacchetto a tutti gli hosts del gruppo 230.0.0.1 in ascolto sulla porta 4446.
DatagramPacket packet;
packet = new DatagramPacket(buf, buf.length,
group, 4446);
socket.send(packet);
MulticastSocket socket = new MulticastSocket(4446);Al termine della comunicazione è importante chiamare il metodo leaveGroup per uscire dal gruppo, altrimenti nelle comunicazioni successive il cliente risulterà ancora appartenente al gruppo.
InetAddress group = InetAddress.getByName("230.0.0.1");
socket.joinGroup(group);
DatagramPacket packet;
byte[] buf = new byte[256];
packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
.
.
.
socket.leaveGroup(group);
socket.close();
HashSet
. Questa classe di java.util,
permette di realizzare un dato tipo insieme (senza duplicati) con la
tecnica delle tabelle hash. Un oggetto si crea con HashSet has =
new HashSet()
. Un oggetto si aggiunge alla tabella con una has.add(Object
o)
(la add non aggiunge l'oggetto se gia' presente nella
tabella). Per scorrere gli oggetti presenti nella tabella usate
l'iteratore associato:
Iterator iter = has.iterator();
while(iter.hasNext()) {
Object nellaTabella = iter.next();
...
}