annotate src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiBroadcastTest.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/WifiBroadcastTest.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
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
3 import java.io.File;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
4 import java.io.FileInputStream;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
5 import java.io.FileNotFoundException;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 import java.io.IOException;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 import java.nio.ByteBuffer;
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
8 import java.nio.channels.FileChannel;
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
9 import java.util.LinkedList;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 public class WifiBroadcastTest {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
12 private static int DefaultPort = 8412;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 private static String MCASTADDR = "224.0.0.1";
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
14 private static int testSize = 256;
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
15 private static long timeout = 1000;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
17
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
18 LinkedList<Integer> ports = new LinkedList<Integer>();
cce76e5eb29b with tcp
one
parents: 14
diff changeset
19 LinkedList<String> addresses = new LinkedList<String>();
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
20 int count = 16;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
21 boolean multicast = false;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
22 boolean mchannel = false;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
23 int receiver_count = 1;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
24 int sender_count = 1;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
25 WifiReceiver wbr[] = new WifiReceiver[receiver_count];
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
26 WifiReceiver wbs[] = new WifiReceiver[sender_count];
12
e1f43b669cdb broadcast on DatagramChannel
one
parents: 10
diff changeset
27 private boolean bchannel;
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
28 private boolean tcp;
18
e9d07562b6b7 network interface
one
parents: 16
diff changeset
29 private String nis = "en1";
19
bb2538b7eb8d selectMode flag
one
parents: 18
diff changeset
30 private boolean selectMode = false;
22
280de47f460d port option
one
parents: 19
diff changeset
31 private int portIndex = 0;
280de47f460d port option
one
parents: 19
diff changeset
32 private int addressIndex = 0;
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
33
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
34 public WifiBroadcastTest() {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
35 ports.add(0,DefaultPort);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
36 addresses.add(0,MCASTADDR);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
37 }
cce76e5eb29b with tcp
one
parents: 14
diff changeset
38
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
39 public static void main(String args[]) {
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
40 new WifiBroadcastTest().test(args);
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
41 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
42
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
43 public void test(String args[]) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
44 options(args);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 try {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 if (multicast) {
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
47 for(int i=0;i<wbr.length;i++) wbr[i] = new WifiMulticast(i,getAddress(i),getPort(i),WifiReceiver.SocketType.Receiver);
10
fc180f38257e multiple sender
one
parents: 9
diff changeset
48 Thread.sleep(timeout/4);
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
49 for(int i=0;i<wbs.length;i++) wbs[i] = new WifiMulticast(i,getAddress(i),getPort(i),WifiReceiver.SocketType.Sender);
1
649b8573372c cleanup
one
parents: 0
diff changeset
50 } else if (mchannel) {
18
e9d07562b6b7 network interface
one
parents: 16
diff changeset
51 for(int i=0;i<wbr.length;i++) wbr[i] = new WifiMulticastChannel(i,getAddress(i),getPort(i),nis, WifiReceiver.SocketType.Receiver);
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
52 Thread.sleep(timeout/4);
18
e9d07562b6b7 network interface
one
parents: 16
diff changeset
53 for(int i=0;i<wbs.length;i++) wbs[i] = new WifiMulticastChannel(i,getAddress(i),getPort(i),nis, WifiReceiver.SocketType.Sender);
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
54 } else if (tcp) {
16
b5ab7003f6d1 tcp running
one
parents: 15
diff changeset
55 addresses.remove(); addresses.add("127.1");
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
56 for(int i=0;i<wbr.length;i++) wbr[i] = new WifiTCP(i,getAddress(i),getPort(i),WifiReceiver.SocketType.Receiver);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
57 Thread.sleep(timeout/4);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
58 for(int i=0;i<wbs.length;i++) wbs[i] = new WifiTCP(i,getAddress(i),getPort(i),WifiReceiver.SocketType.Sender);
12
e1f43b669cdb broadcast on DatagramChannel
one
parents: 10
diff changeset
59 } else if (bchannel) {
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
60 for(int i=0;i<wbr.length;i++) wbr[i] = new WifiBroadcastChannel(i,getPort(i),WifiReceiver.SocketType.Receiver);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
61 Thread.sleep(timeout/4);
cce76e5eb29b with tcp
one
parents: 14
diff changeset
62 for(int i=0;i<wbs.length;i++) wbs[i] = new WifiBroadcastChannel(i,getPort(i),WifiReceiver.SocketType.Sender);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 } else {
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
64 for(int i=0;i<wbr.length;i++) wbr[i] = new WifiBroadcast(i,getPort(i),WifiReceiver.SocketType.Receiver);
10
fc180f38257e multiple sender
one
parents: 9
diff changeset
65 Thread.sleep(timeout/4);
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
66 for(int i=0;i<wbs.length;i++) wbs[i] = new WifiBroadcast(i,getPort(i),WifiReceiver.SocketType.Sender);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 } catch (IOException e) {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
69 System.err.println("err "+e);
9c99e2193277 find broadcast
one
parents: 2
diff changeset
70 } catch (InterruptedException e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
71 System.err.println("err "+e);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 }
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
73 runTest(count, wbr, wbs);
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
74
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
75 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
76
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
77 private String getAddress(int i) {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
78 return addresses.get(i%addresses.size());
cce76e5eb29b with tcp
one
parents: 14
diff changeset
79 }
cce76e5eb29b with tcp
one
parents: 14
diff changeset
80
cce76e5eb29b with tcp
one
parents: 14
diff changeset
81 private int getPort(int i) {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
82 return ports.get(i%ports.size());
cce76e5eb29b with tcp
one
parents: 14
diff changeset
83 }
cce76e5eb29b with tcp
one
parents: 14
diff changeset
84
cce76e5eb29b with tcp
one
parents: 14
diff changeset
85 public void options(String[] args) {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
86 for(int i=0;i<args.length;i++) {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
87 switch(args[i]) {
cce76e5eb29b with tcp
one
parents: 14
diff changeset
88 case "-m": multicast = true; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
89 case "-channel": mchannel = true; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
90 case "-bchannel": bchannel = true; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
91 case "-tcp": tcp = true; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
92 case "-r": i++; receiver_count = getOptInt(args, receiver_count, i); wbr = new WifiReceiver[receiver_count]; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
93 case "-s": i++; sender_count = getOptInt(args, sender_count, i); wbs = new WifiReceiver[sender_count]; break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
94 case "-c": i++; count = getOptInt(args, count, i); break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
95 case "-t": i++; timeout = getOptInt(args, (int) timeout, i); break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
96 case "-T": i++; testSize = getOptInt(args, testSize, i); break;
18
e9d07562b6b7 network interface
one
parents: 16
diff changeset
97 case "-n": i++; nis = getOptString(args, nis, i); break;
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
98 case "-p": i++; setPort(args,i); break;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
99 case "-a": i++; setAddress(args, i); break;
19
bb2538b7eb8d selectMode flag
one
parents: 18
diff changeset
100 case "-select": i++; selectMode = true; break;
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
101 default: i++;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
102 System.out.println(
cce76e5eb29b with tcp
one
parents: 14
diff changeset
103 "(default) Broadcast DatagramSocket\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
104 "-m Multicast DatagramSocket\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
105 "-cahnnel Multicast with DatagramChannel\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
106 "-bcahnnel Broadcase with DatagramChannel\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
107 "-tcp TCP stream\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
108 "-r N create N receivers\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
109 "-s N create N senders\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
110 "-c N send count packet\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
111 "-t N timeout N msec\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
112 "-T N send N byte packet\n"+
18
e9d07562b6b7 network interface
one
parents: 16
diff changeset
113 "-n en1 Network Interface name for multicast (default en1)\n"+
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
114 "-p N broadcast/multicast port\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
115 "-a S broadcast/multicast address\n"+
19
bb2538b7eb8d selectMode flag
one
parents: 18
diff changeset
116 "-select use select for timeout\n"+
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
117 "-h print this\n"+
cce76e5eb29b with tcp
one
parents: 14
diff changeset
118 ""
cce76e5eb29b with tcp
one
parents: 14
diff changeset
119 );
cce76e5eb29b with tcp
one
parents: 14
diff changeset
120 return;
cce76e5eb29b with tcp
one
parents: 14
diff changeset
121 }
cce76e5eb29b with tcp
one
parents: 14
diff changeset
122 }
cce76e5eb29b with tcp
one
parents: 14
diff changeset
123 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
127
cce76e5eb29b with tcp
one
parents: 14
diff changeset
128 public void runTest(int count, WifiReceiver[] wbr, WifiReceiver wbs[]) {
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
129 Thread t = timeouter();
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
130 Thread send[] = new Thread[wbs.length];
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
131 int id = 0;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
132 for(WifiReceiver s:wbs) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
133 send[id]= sender(s,count);
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
134 id ++;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
135 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
136 id = 0;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
137 Thread recv[] = new Thread[wbr.length];
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
138 for(WifiReceiver r: wbr) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
139 recv[id] = receiver(r,id, count, timeout);
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
140 id ++;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
141 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
142 try {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
143 for(int i = 0;i<wbr.length;i++) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
144 recv[i].join();
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
145 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
146 for(int i = 0;i<wbs.length;i++) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
147 send[i].join();
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
148 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
149 t.join();
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
150 } catch (InterruptedException e) {
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
151 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
152 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
153
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
154
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
155
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
156 public int getOptInt(String[] args, int count, int i) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 if (i<args.length) { count = Integer.parseInt(args[i]); }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 return count;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160
12
e1f43b669cdb broadcast on DatagramChannel
one
parents: 10
diff changeset
161 public String getOptString(String[] args, String str, int i) {
22
280de47f460d port option
one
parents: 19
diff changeset
162 if (i<args.length) { str = args[i]; }
280de47f460d port option
one
parents: 19
diff changeset
163 return str;
12
e1f43b669cdb broadcast on DatagramChannel
one
parents: 10
diff changeset
164 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165
22
280de47f460d port option
one
parents: 19
diff changeset
166 private void setAddress(String[] args, int i) {
280de47f460d port option
one
parents: 19
diff changeset
167 String adr = getOptString(args,addresses.get(0),i);
280de47f460d port option
one
parents: 19
diff changeset
168 int p;
280de47f460d port option
one
parents: 19
diff changeset
169 if ((p=adr.indexOf(":"))>0) {
280de47f460d port option
one
parents: 19
diff changeset
170 String sp = adr.substring(p+1);
280de47f460d port option
one
parents: 19
diff changeset
171 adr = adr.substring(0,p-1);
280de47f460d port option
one
parents: 19
diff changeset
172 portIndex = addressIndex;
280de47f460d port option
one
parents: 19
diff changeset
173 if (ports.size()>portIndex) ports.remove(portIndex);
280de47f460d port option
one
parents: 19
diff changeset
174 ports.add(portIndex,Integer.parseInt(sp));
280de47f460d port option
one
parents: 19
diff changeset
175 portIndex ++;
280de47f460d port option
one
parents: 19
diff changeset
176 }
280de47f460d port option
one
parents: 19
diff changeset
177 if (addresses.size()>addressIndex) addresses.remove(addressIndex);
280de47f460d port option
one
parents: 19
diff changeset
178 addresses.add(addressIndex,adr);
280de47f460d port option
one
parents: 19
diff changeset
179 addressIndex++;
280de47f460d port option
one
parents: 19
diff changeset
180 }
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
181
cce76e5eb29b with tcp
one
parents: 14
diff changeset
182 private void setPort(String[] args, int i) {
22
280de47f460d port option
one
parents: 19
diff changeset
183 String sport = getOptString(args,"0", i);
280de47f460d port option
one
parents: 19
diff changeset
184 if (ports.size()>portIndex) ports.remove(portIndex);
280de47f460d port option
one
parents: 19
diff changeset
185 ports.add(portIndex,Integer.parseInt(sport));
280de47f460d port option
one
parents: 19
diff changeset
186 portIndex++;
280de47f460d port option
one
parents: 19
diff changeset
187 }
15
cce76e5eb29b with tcp
one
parents: 14
diff changeset
188
cce76e5eb29b with tcp
one
parents: 14
diff changeset
189 public Thread sender(final WifiReceiver wbs, final int count) {
19
bb2538b7eb8d selectMode flag
one
parents: 18
diff changeset
190 wbs.selectMode(selectMode);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 Runnable sender = new Runnable() {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
192
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 public void run() {
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
195 // ByteBuffer testData = getTestData(testSize);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
196 ByteBuffer testData = readTestData();
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
197 int i = 0;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 try {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
199 Thread.sleep(timeout);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
200 for(i = 0; i<count;i++) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 testData.putInt(0, i);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 wbs.send(testData);
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
203 testData.flip();
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
205 } catch (Exception e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
206 System.err.println("sender error at "+i+" "+e);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 };
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
210 Thread s = new Thread(sender);
2a328333ba70 no compile errors
one
parents: 1
diff changeset
211 s.start();
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
212 return s;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
215 private boolean running;
1
649b8573372c cleanup
one
parents: 0
diff changeset
216
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
217 public Thread timeouter() {
1
649b8573372c cleanup
one
parents: 0
diff changeset
218 running = true;
649b8573372c cleanup
one
parents: 0
diff changeset
219 Runnable timeouter = new Runnable() {
649b8573372c cleanup
one
parents: 0
diff changeset
220 @Override
649b8573372c cleanup
one
parents: 0
diff changeset
221 public void run() {
649b8573372c cleanup
one
parents: 0
diff changeset
222 try {
649b8573372c cleanup
one
parents: 0
diff changeset
223 Thread.sleep(30*1000);
649b8573372c cleanup
one
parents: 0
diff changeset
224 } catch (InterruptedException e) {
649b8573372c cleanup
one
parents: 0
diff changeset
225 }
649b8573372c cleanup
one
parents: 0
diff changeset
226 running = false;
649b8573372c cleanup
one
parents: 0
diff changeset
227 }
649b8573372c cleanup
one
parents: 0
diff changeset
228 };
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
229 Thread t = new Thread(timeouter); t.start();
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
230 return t;
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
231 }
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
232
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
233 public Thread receiver(final WifiReceiver wbr, final int id, final int count, final long timeout) {
19
bb2538b7eb8d selectMode flag
one
parents: 18
diff changeset
234 wbr.selectMode(selectMode);
1
649b8573372c cleanup
one
parents: 0
diff changeset
235 Runnable receiver = new Runnable() {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 public void run() {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 ByteBuffer testData = ByteBuffer.allocate(4096);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
239 int bad = 0, good = 0;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 try {
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
241 for(int i = 0; running && i<count;i++) {
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
242 testData.clear();
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 wbr.recieve(testData,timeout);
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
244 if (!testData.hasRemaining()) continue;
5
7679d10bdae9 multiple receivers
one
parents: 4
diff changeset
245 System.out.println("receive id"+id+":"+testData.remaining()+" bytes.");
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 int seq = testData.getInt();
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 if (seq!=i) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 bad++; i = seq;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
249 } else {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
250 good++;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
253 } catch (Exception e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
254 System.err.println("receiver error "+e);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
256 System.out.println("get "+good+" packets, "+bad+" losts.");
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 };
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
259 Thread r = new Thread(receiver); r.start();
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
260 return r;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 5
diff changeset
263 public ByteBuffer getTestData(int i) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 ByteBuffer b = ByteBuffer.allocate(i);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265 b.putInt(0);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 for(int j = 0; j<256; j++ ) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 b.put((byte)j);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 if (! b.hasRemaining()) break;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 if (j == 255) j=0;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 b.flip();
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 return b;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 }
24
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
274
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
275 public ByteBuffer readTestData() {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
276 FileChannel srcChannel = null;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
277 String path = "./testfile.txt";
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
278 ByteBuffer buffer = null;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
279 try {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
280 srcChannel = fileReader(path).getChannel();
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
281 buffer = ByteBuffer.allocate((int) srcChannel.size());
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
282 srcChannel.read(buffer);
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
283 buffer.clear();
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
284 return buffer;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
285 } catch (IOException e) {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
286 System.out.println("File not found.");
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
287 } finally {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
288 try {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
289 srcChannel.close();
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
290 } catch (Exception e) {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
291 e.printStackTrace();
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
292 }
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
293 }
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
294 return buffer;
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
295 }
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
296
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
297 private FileInputStream fileReader(String path)
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
298 throws FileNotFoundException {
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
299 return new FileInputStream(new File(path));
b801551b7d49 add test files
Taninari YU <you@cr.ie.u-ryukyu.ac.jp>
parents: 22
diff changeset
300 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
301 }