annotate src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcast.java @ 27:12633f67f3cf default tip

jar
author oshiro
date Wed, 28 Nov 2018 18:28:39 +0900
parents src/main/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcast.java@42ecbd9364fa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27
oshiro
parents: 26
diff changeset
1 package jp.ac.uryukyu.ie.kono.wifibroadcast;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
3 import java.net.NetworkInterface;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 import java.io.IOException;
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
5 import java.net.DatagramPacket;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
6 import java.net.DatagramSocket;
9c99e2193277 find broadcast
one
parents: 2
diff changeset
7 import java.net.InetAddress;
9c99e2193277 find broadcast
one
parents: 2
diff changeset
8 import java.net.InterfaceAddress;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 import java.net.SocketException;
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
10 import java.net.UnknownHostException;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 import java.nio.ByteBuffer;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
12 import java.util.Enumeration;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
14 public class WifiBroadcast implements WifiReceiver {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
16 private DatagramSocket s;
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
17 private int port;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
18 private InetAddress mAddr;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 4
diff changeset
20 public WifiBroadcast(int id,int port, SocketType sender) throws IOException {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
21 this.port = port;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
22
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
23 if (sender == SocketType.Sender) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
24 try {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
25 InetAddress address0 = getBroadcast();
9c99e2193277 find broadcast
one
parents: 2
diff changeset
26 System.out.println("Found broadcast "+address0);
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
27 mAddr = address0;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
28 s = new DatagramSocket();
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
29 // s.bind(new InetSocketAddress(address0,port+1+id));
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
30 // s.setBroadcast(true);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
31 } catch (SocketException e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
32 }
9c99e2193277 find broadcast
one
parents: 2
diff changeset
33 } else {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
34 // InetAddress address0 = getBroadcast();
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
35 s = new DatagramSocket(port);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
36 // s.bind(new InetSocketAddress(address0,port));
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
37 s.setReuseAddress(true);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
38 s.setBroadcast(true);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 public void recieve(ByteBuffer testData, long timeout) throws IOException {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
43 DatagramPacket packet = new DatagramPacket(testData.array(),testData.capacity());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
44 s.receive(packet);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
45 testData.limit(packet.getLength());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
46 testData.position(0);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
47 System.out.println("recv "+packet.getLength()+" bytes from "+packet.getAddress());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
48 return; // one at a time
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
49 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
50
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
51
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
52 public void send(ByteBuffer testData) throws IOException {
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
53 if(testData.limit() < 1500) {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
54 DatagramPacket sendPacket = new DatagramPacket(testData.array(), testData.limit(),mAddr, port);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
55 s.send(sendPacket);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
56 testData.position(testData.limit());
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
57 } else {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
58 int temp = 1000;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
59 for(int i = 0 ; i < testData.limit();) {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
60 DatagramPacket sendPacket = new DatagramPacket(testData.array(),i, temp, mAddr, port);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
61 s.send(sendPacket);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
62 testData.position(i);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
63 i += 1000;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
64 if(testData.limit() - i > 1000) {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
65 temp = 1000;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
66 } else {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
67 temp = testData.limit() - i;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
68 }
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
69 }
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 19
diff changeset
70 }
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
71 System.out.println("send");
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
73
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
74 public InetAddress getBroadcast0() throws UnknownHostException {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
75 return InetAddress.getByName("192.168.100.66");
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
76 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
77
12
e1f43b669cdb broadcast on DatagramChannel
one
parents: 10
diff changeset
78 public static InetAddress getBroadcast() throws SocketException {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
79 Enumeration<NetworkInterface> interfaces =
9c99e2193277 find broadcast
one
parents: 2
diff changeset
80 NetworkInterface.getNetworkInterfaces();
9c99e2193277 find broadcast
one
parents: 2
diff changeset
81 while (interfaces.hasMoreElements()) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
82 NetworkInterface networkInterface = interfaces.nextElement();
9c99e2193277 find broadcast
one
parents: 2
diff changeset
83 if (networkInterface.isLoopback())
9c99e2193277 find broadcast
one
parents: 2
diff changeset
84 continue; // Don't want to broadcast to the loopback interface
9c99e2193277 find broadcast
one
parents: 2
diff changeset
85 for (InterfaceAddress interfaceAddress :
9c99e2193277 find broadcast
one
parents: 2
diff changeset
86 networkInterface.getInterfaceAddresses()) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
87 InetAddress broadcast = interfaceAddress.getBroadcast();
9c99e2193277 find broadcast
one
parents: 2
diff changeset
88 if (broadcast == null)
9c99e2193277 find broadcast
one
parents: 2
diff changeset
89 continue;
9c99e2193277 find broadcast
one
parents: 2
diff changeset
90 // Use the address
10
fc180f38257e multiple sender
one
parents: 9
diff changeset
91 System.out.println("MTU="+networkInterface.getMTU());
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
92 return broadcast;
9c99e2193277 find broadcast
one
parents: 2
diff changeset
93 }
9c99e2193277 find broadcast
one
parents: 2
diff changeset
94 }
9c99e2193277 find broadcast
one
parents: 2
diff changeset
95 throw new SocketException();
9c99e2193277 find broadcast
one
parents: 2
diff changeset
96 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97
19
bb2538b7eb8d selectMode flag
one
parents: 12
diff changeset
98 @Override
bb2538b7eb8d selectMode flag
one
parents: 12
diff changeset
99 public void selectMode(boolean mode) {
bb2538b7eb8d selectMode flag
one
parents: 12
diff changeset
100 }
bb2538b7eb8d selectMode flag
one
parents: 12
diff changeset
101
1
649b8573372c cleanup
one
parents: 0
diff changeset
102
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 }