annotate src/wifibroadcast/WifiDatagram.java @ 23:4c3908c8b761

fix
author one
date Sat, 01 Sep 2012 17:36:44 +0900
parents bb2538b7eb8d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
1 package wifibroadcast;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
2
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
3 import java.io.IOException;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
4 import java.net.DatagramPacket;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
5 import java.net.DatagramSocket;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
6 import java.net.InetAddress;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
7 import java.net.InetSocketAddress;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
8 import java.net.SocketException;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
9 import java.net.UnknownHostException;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
10 import java.nio.ByteBuffer;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
11
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
12 public class WifiDatagram implements WifiReceiver {
19
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
13 /**
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
14 * Test class for non broadcast/multicast datagram
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
15 */
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
16
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
17 private DatagramSocket s;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
18 private int port;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
19 private InetAddress mAddr;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
20
9
95d58cc5bb0b instance for test, multiple senders
one
parents: 6
diff changeset
21 public WifiDatagram(int id, int port, SocketType sender) throws IOException {
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
22 this.port = port;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
23
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
24 if (sender == SocketType.Sender) {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
25 try {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
26 InetAddress address0 = getLocalAddress();
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
27 System.out.println("Found broadcast "+address0);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
28 mAddr = address0;
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
29 s = new DatagramSocket();
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
30 s.bind(new InetSocketAddress(address0,port+1));
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
31 s.setBroadcast(true);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
32 } catch (SocketException e) {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
33 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
34 } else {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
35 // InetAddress address0 = getBroadcast();
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
36 s = new DatagramSocket(port);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
37 // s.bind(new InetSocketAddress(address0,port));
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
38 s.setReuseAddress(true);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
39 s.setBroadcast(true);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
40 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
41 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
42
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
43 public void recieve(ByteBuffer testData, long timeout) throws IOException {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
44 DatagramPacket packet = new DatagramPacket(testData.array(),testData.capacity());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
45 s.receive(packet);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
46 testData.limit(packet.getLength());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
47 testData.position(0);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
48 return; // one at a time
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
49 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
50
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
51
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
52 public void send(ByteBuffer testData) throws IOException {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
53 DatagramPacket sendPacket = new DatagramPacket(testData.array(), testData.limit(),mAddr, port);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
54 s.send(sendPacket);
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
55 testData.position(testData.limit());
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
56 System.out.println("send");
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
57 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
58
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
59 public InetAddress getLocalAddress() throws UnknownHostException {
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
60 return InetAddress.getByName("127.0.0.1");
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
61 }
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
62
19
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
63 @Override
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
64 public void selectMode(boolean mode) {
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
65 }
bb2538b7eb8d selectMode flag
one
parents: 9
diff changeset
66
4
404778ac3f55 worked. Broadcast, Multicast, Multicast channel.
one
parents:
diff changeset
67 }