annotate src/wifibroadcast/WifiMulticastChannel.java @ 0:df9d16620c08

Wifi broad cast test program
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 28 Jul 2012 12:16:49 +0900
parents
children 649b8573372c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 package wifibroadcast;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 import java.io.IOException;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 import java.net.InetAddress;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 import java.net.InetSocketAddress;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 import java.net.NetworkInterface;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 import java.net.SocketAddress;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 import java.net.StandardProtocolFamily;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 import java.net.StandardSocketOptions;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 import java.nio.ByteBuffer;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 import java.nio.channels.DatagramChannel;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 public class WifiMulticastChannel implements WifiReciver,WifiSender {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 private InetAddress mAddr;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 private DatagramChannel dc;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 private SocketAddress sAddr;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 public WifiMulticastChannel(String mCASTADDR, int port) throws IOException {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 // join multicast group on this interface, and also use this
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 // interface for outgoing multicast datagrams
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 NetworkInterface ni = NetworkInterface.getByName("en0");
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 dc = DatagramChannel.open(StandardProtocolFamily.INET)
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 .setOption(StandardSocketOptions.SO_REUSEADDR, true)
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 .bind(sAddr = new InetSocketAddress(port))
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 .setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 mAddr = InetAddress.getByName(mCASTADDR);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 dc.join(mAddr, ni);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 public void recieve(ByteBuffer testData, long timeout) throws IOException {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 dc.receive(testData);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 public void send(ByteBuffer testData) throws IOException {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 dc.send(testData, sAddr);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 }