diff src/main/java/jp/ac/uryukyu/ie/kono/wifibroadcast/WifiMulticast.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/WifiMulticast.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/WifiMulticast.java	Wed Nov 28 18:28:39 2018 +0900
@@ -0,0 +1,46 @@
+package jp.ac.uryukyu.ie.kono.wifibroadcast;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.net.DatagramPacket;
+import java.net.InetAddress;
+import java.net.MulticastSocket;
+
+public class WifiMulticast implements WifiReceiver {
+	private MulticastSocket soc;
+	private InetAddress mAddr;
+	private int port;
+
+	public WifiMulticast(int id, String mCASTADDR, int port, SocketType sender) throws IOException {
+		this.port = port;
+		try {
+			mAddr = InetAddress.getByName(mCASTADDR);
+			soc = new MulticastSocket(port);
+			soc.joinGroup(mAddr);
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	@Override
+	public void recieve(ByteBuffer testData, long timeout) throws IOException {
+		DatagramPacket packet = new DatagramPacket(testData.array(),testData.capacity());
+		soc.receive(packet);
+		testData.limit(packet.getLength());
+		testData.position(0);
+	}
+
+	@Override
+	public void send(ByteBuffer testData) throws IOException {
+		DatagramPacket sendPacket = new DatagramPacket(testData.array(), testData.limit(),mAddr, port);
+		soc.send(sendPacket);		
+		testData.position(testData.limit());
+	}
+
+    @Override
+    public void selectMode(boolean mode) {
+
+    }
+
+}
+