Mercurial > hg > Members > kono > WifiBroadcast
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 |
rev | line source |
---|---|
27 | 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 | 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 | 5 import java.net.DatagramPacket; |
3 | 6 import java.net.DatagramSocket; |
7 import java.net.InetAddress; | |
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 | 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 | 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 | 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 | 16 private DatagramSocket s; |
4 | 17 private int port; |
18 private InetAddress mAddr; | |
0
df9d16620c08
Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 |
9 | 20 public WifiBroadcast(int id,int port, SocketType sender) throws IOException { |
4 | 21 this.port = port; |
22 | |
3 | 23 if (sender == SocketType.Sender) { |
24 try { | |
25 InetAddress address0 = getBroadcast(); | |
26 System.out.println("Found broadcast "+address0); | |
4 | 27 mAddr = address0; |
28 s = new DatagramSocket(); | |
24 | 29 // s.bind(new InetSocketAddress(address0,port+1+id)); |
30 // s.setBroadcast(true); | |
3 | 31 } catch (SocketException e) { |
32 } | |
33 } else { | |
4 | 34 // InetAddress address0 = getBroadcast(); |
35 s = new DatagramSocket(port); | |
36 // s.bind(new InetSocketAddress(address0,port)); | |
37 s.setReuseAddress(true); | |
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 | 43 DatagramPacket packet = new DatagramPacket(testData.array(),testData.capacity()); |
44 s.receive(packet); | |
45 testData.limit(packet.getLength()); | |
46 testData.position(0); | |
47 System.out.println("recv "+packet.getLength()+" bytes from "+packet.getAddress()); | |
48 return; // one at a time | |
49 } | |
50 | |
51 | |
52 public void send(ByteBuffer testData) throws IOException { | |
24 | 53 if(testData.limit() < 1500) { |
54 DatagramPacket sendPacket = new DatagramPacket(testData.array(), testData.limit(),mAddr, port); | |
55 s.send(sendPacket); | |
56 testData.position(testData.limit()); | |
57 } else { | |
58 int temp = 1000; | |
59 for(int i = 0 ; i < testData.limit();) { | |
60 DatagramPacket sendPacket = new DatagramPacket(testData.array(),i, temp, mAddr, port); | |
61 s.send(sendPacket); | |
62 testData.position(i); | |
63 i += 1000; | |
64 if(testData.limit() - i > 1000) { | |
65 temp = 1000; | |
66 } else { | |
67 temp = testData.limit() - i; | |
68 } | |
69 } | |
70 } | |
4 | 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 | 73 |
4 | 74 public InetAddress getBroadcast0() throws UnknownHostException { |
75 return InetAddress.getByName("192.168.100.66"); | |
76 } | |
77 | |
12 | 78 public static InetAddress getBroadcast() throws SocketException { |
3 | 79 Enumeration<NetworkInterface> interfaces = |
80 NetworkInterface.getNetworkInterfaces(); | |
81 while (interfaces.hasMoreElements()) { | |
82 NetworkInterface networkInterface = interfaces.nextElement(); | |
83 if (networkInterface.isLoopback()) | |
84 continue; // Don't want to broadcast to the loopback interface | |
85 for (InterfaceAddress interfaceAddress : | |
86 networkInterface.getInterfaceAddresses()) { | |
87 InetAddress broadcast = interfaceAddress.getBroadcast(); | |
88 if (broadcast == null) | |
89 continue; | |
90 // Use the address | |
10 | 91 System.out.println("MTU="+networkInterface.getMTU()); |
3 | 92 return broadcast; |
93 } | |
94 } | |
95 throw new SocketException(); | |
96 } | |
0
df9d16620c08
Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
97 |
19 | 98 @Override |
99 public void selectMode(boolean mode) { | |
100 } | |
101 | |
1 | 102 |
0
df9d16620c08
Wifi broad cast test program
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 } |