annotate src/wifibroadcast/WifiBroadcastTest.java @ 4:404778ac3f55

worked. Broadcast, Multicast, Multicast channel.
author one
date Sat, 28 Jul 2012 19:33:34 +0900
parents 9c99e2193277
children 7679d10bdae9
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.nio.ByteBuffer;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 public class WifiBroadcastTest {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
7 private static int DefaultPort = 8412;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 private static String MCASTADDR = "224.0.0.1";
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
9 private static int testSize = 256;
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
10 private static long timeout = 1000;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
12 public static void main(String args[]) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 int port = DefaultPort ;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
14 int count = 16;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 boolean multicast = false;
1
649b8573372c cleanup
one
parents: 0
diff changeset
16 boolean mchannel = false;
649b8573372c cleanup
one
parents: 0
diff changeset
17 WifiReceiver wbr = null;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
18 WifiReceiver wbs = null;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 for(int i=0;i<args.length;i++) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 if (args[i].equals("-m")) multicast = true;
1
649b8573372c cleanup
one
parents: 0
diff changeset
21 else if (args[i].equals("-channel")) mchannel = true;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 else if (args[i].equals("-c")) { i++; count = getOptInt(args, count, i);}
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 else if (args[i].equals("-t")) { i++; timeout = getOptInt(args, count, i);}
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 else if (args[i].equals("-p")) { i++; port = getOptInt(args, count, i);}
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 try {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 if (multicast) {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
28 wbr = new WifiMulticast(MCASTADDR,port,WifiReceiver.SocketType.Receiver);
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
29 Thread.sleep(timeout);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
30 wbs = new WifiMulticast(MCASTADDR,port,WifiReceiver.SocketType.Receiver);
1
649b8573372c cleanup
one
parents: 0
diff changeset
31 } else if (mchannel) {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
32 wbr = new WifiMulticastChannel(MCASTADDR,port,WifiReceiver.SocketType.Receiver);
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
33 Thread.sleep(timeout);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
34 wbs = new WifiMulticastChannel(MCASTADDR,port,WifiReceiver.SocketType.Sender);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 } else {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
36 wbr = new WifiBroadcast(port,WifiReceiver.SocketType.Receiver);
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
37 Thread.sleep(timeout);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
38 wbs = new WifiBroadcast(port,WifiReceiver.SocketType.Sender);
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 } catch (IOException e) {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
41 System.err.println("err "+e);
9c99e2193277 find broadcast
one
parents: 2
diff changeset
42 } catch (InterruptedException e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
43 System.err.println("err "+e);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
45 sender(wbs,count);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 receiver(wbr,count, timeout);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 public static int getOptInt(String[] args, int count, int i) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 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
53 return count;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57
1
649b8573372c cleanup
one
parents: 0
diff changeset
58 public static void sender(final WifiReceiver wbs, final int count) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 Runnable sender = new Runnable() {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
60
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 public void run() {
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
63 ByteBuffer testData = getTestData(testSize);
9c99e2193277 find broadcast
one
parents: 2
diff changeset
64 int i = 0;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 try {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents: 3
diff changeset
66 Thread.sleep(timeout);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
67 for(i = 0; i<count;i++) {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 testData.putInt(0, i);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 wbs.send(testData);
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
70 testData.flip();
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
72 } catch (Exception e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
73 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
74 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 };
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
77 Thread s = new Thread(sender);
2a328333ba70 no compile errors
one
parents: 1
diff changeset
78 s.start();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
79 try {
2a328333ba70 no compile errors
one
parents: 1
diff changeset
80 s.join();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
81 } catch (InterruptedException e) {
2a328333ba70 no compile errors
one
parents: 1
diff changeset
82 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84
1
649b8573372c cleanup
one
parents: 0
diff changeset
85 private static boolean running;
649b8573372c cleanup
one
parents: 0
diff changeset
86
649b8573372c cleanup
one
parents: 0
diff changeset
87 public static void receiver(final WifiReceiver wbr, final int count, final long timeout) {
649b8573372c cleanup
one
parents: 0
diff changeset
88 running = true;
649b8573372c cleanup
one
parents: 0
diff changeset
89 Runnable timeouter = new Runnable() {
649b8573372c cleanup
one
parents: 0
diff changeset
90 @Override
649b8573372c cleanup
one
parents: 0
diff changeset
91 public void run() {
649b8573372c cleanup
one
parents: 0
diff changeset
92 try {
649b8573372c cleanup
one
parents: 0
diff changeset
93 Thread.sleep(30*1000);
649b8573372c cleanup
one
parents: 0
diff changeset
94 } catch (InterruptedException e) {
649b8573372c cleanup
one
parents: 0
diff changeset
95 }
649b8573372c cleanup
one
parents: 0
diff changeset
96 running = false;
649b8573372c cleanup
one
parents: 0
diff changeset
97 }
649b8573372c cleanup
one
parents: 0
diff changeset
98 };
649b8573372c cleanup
one
parents: 0
diff changeset
99 Runnable receiver = new Runnable() {
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 @Override
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 public void run() {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 ByteBuffer testData = ByteBuffer.allocate(4096);
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
103 int bad = 0, good = 0;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 try {
1
649b8573372c cleanup
one
parents: 0
diff changeset
105 for(int i = 0; running && i<count;i++) {
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
106 testData.clear();
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 wbr.recieve(testData,timeout);
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
108 if (!testData.hasRemaining()) continue;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
109 System.out.println("receive "+testData.remaining()+" bytes.");
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 int seq = testData.getInt();
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 if (seq!=i) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 bad++; i = seq;
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
113 } else {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
114 good++;
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
117 } catch (Exception e) {
9c99e2193277 find broadcast
one
parents: 2
diff changeset
118 System.err.println("receiver error "+e);
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 }
3
9c99e2193277 find broadcast
one
parents: 2
diff changeset
120 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
121 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 };
2
2a328333ba70 no compile errors
one
parents: 1
diff changeset
123 Thread r = new Thread(receiver); r.start();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
124 Thread t = new Thread(timeouter); t.start();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
125 try {
2a328333ba70 no compile errors
one
parents: 1
diff changeset
126 r.join();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
127 t.join();
2a328333ba70 no compile errors
one
parents: 1
diff changeset
128 } catch (InterruptedException e) {
2a328333ba70 no compile errors
one
parents: 1
diff changeset
129 }
0
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 public static ByteBuffer getTestData(int i) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 ByteBuffer b = ByteBuffer.allocate(i);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 b.putInt(0);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 for(int j = 0; j<256; j++ ) {
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 b.put((byte)j);
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137 if (! b.hasRemaining()) break;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 if (j == 255) j=0;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 b.flip();
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 return b;
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
142 }
df9d16620c08 Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 }