1
2
3
4
5
6
7 package org.neo.swarm.util.network.multicast;
8
9 import java.io.IOException;
10 import java.net.DatagramPacket;
11 import java.net.InetAddress;
12 import java.net.MulticastSocket;
13
14
15 /***
16 * Sends byte data using multicast
17 * @author navery
18 */
19 public class MulticastSender implements Sender {
20 MulticastSocket socket;
21 int port;
22 InetAddress group;
23 int ttl = 32;
24 int soTimeout = 1000;
25 boolean loopback = false;
26
27
28 public MulticastSender(InetAddress group, int port, boolean loopback) {
29 try {
30 this.group = group;
31 this.port = port;
32 this.loopback = loopback;
33
34 socket = new MulticastSocket(port);
35 socket.setSoTimeout(soTimeout);
36 socket.setLoopbackMode(loopback);
37 } catch (IOException ex) {
38 ex.printStackTrace();
39 }
40 }
41
42
43
44 public void send(byte[] data) throws IOException {
45 DatagramPacket packet = new DatagramPacket(data, data.length, group, port);
46 int ttl = socket.getTimeToLive();
47 socket.setTimeToLive(this.ttl);
48 socket.send(packet);
49 socket.setTimeToLive(ttl);
50 }
51
52
53
54 public void close() throws IOException {
55 socket.close();
56 }
57
58 }