Mercurial > hg > Members > kono > WifiBroadcast
view src/wifibroadcast/WifiDatagram.java @ 4:404778ac3f55
worked. Broadcast, Multicast, Multicast channel.
author | one |
---|---|
date | Sat, 28 Jul 2012 19:33:34 +0900 |
parents | |
children | 248ae478dbe6 |
line wrap: on
line source
package wifibroadcast; import java.net.NetworkInterface; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.InterfaceAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.nio.ByteBuffer; import java.util.Enumeration; public class WifiDatagram implements WifiReceiver { private DatagramSocket s; private int port; private InetAddress mAddr; public WifiDatagram(int port, SocketType sender) throws IOException { this.port = port; if (sender == SocketType.Sender) { try { InetAddress address0 = getLocalAddress(); System.out.println("Found broadcast "+address0); mAddr = address0; s = new DatagramSocket(); s.bind(new InetSocketAddress(address0,port+1)); s.setBroadcast(true); } catch (SocketException e) { } } else { // InetAddress address0 = getBroadcast(); s = new DatagramSocket(port); // s.bind(new InetSocketAddress(address0,port)); s.setReuseAddress(true); s.setBroadcast(true); } } public void recieve(ByteBuffer testData, long timeout) throws IOException { DatagramPacket packet = new DatagramPacket(testData.array(),testData.capacity()); s.receive(packet); testData.limit(packet.getLength()); testData.position(0); return; // one at a time } public void send(ByteBuffer testData) throws IOException { DatagramPacket sendPacket = new DatagramPacket(testData.array(), testData.limit(),mAddr, port); s.send(sendPacket); testData.position(testData.limit()); System.out.println("send"); } public InetAddress getLocalAddress() throws UnknownHostException { return InetAddress.getByName("127.0.0.1"); } }