diff src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiDatagram.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/WifiDatagram.java@42ecbd9364fa
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiDatagram.java	Wed Nov 28 18:28:39 2018 +0900
@@ -0,0 +1,67 @@
+package jp.ac.uryukyu.ie.kono.wifibroadcast;
+
+import java.io.IOException;
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.SocketException;
+import java.net.UnknownHostException;
+import java.nio.ByteBuffer;
+
+public class WifiDatagram implements WifiReceiver {
+    /**
+     *  Test class for non broadcast/multicast datagram
+     */
+
+	private DatagramSocket s;
+	private int port;
+	private InetAddress mAddr;
+
+	public WifiDatagram(int id, 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");
+	}
+
+    @Override
+    public void selectMode(boolean mode) {
+    }
+
+}