View Javadoc

1   /*
2    * Created on Mar 22, 2004
3    *
4    * To change the template for this generated file go to
5    * Window - Preferences - Java - Code Generation - Code and Comments
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  	/* (non-Javadoc)
42  	 * @see org.neo.swarm.util.multicast.Sender#send(java.lang.String)
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  	/* (non-Javadoc)
52  	 * @see org.neo.swarm.util.multicast.Sender#close()
53  	 */
54  	public void close() throws IOException {
55  		socket.close();
56  	}
57  	
58  }