view 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 source

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) {

    }

}