// UDPServer.java

import java.io.*;
import java.net.*;

public class UDPServer {
	InetAddress iaddr;
	int iport;
	int bufSize = 65507;
	DatagramSocket dgSocket;
	DatagramPacket dgPacketIn;

	public UDPServer(int port)
		throws SocketException {
		dgSocket = new DatagramSocket(port);
	}

	public void setBufSize(int newBufSize) {
		bufSize = newBufSize;
	}

	public InetAddress getReceivedPacketAddress() {
		if (dgPacketIn != null)
			return dgPacketIn.getAddress();
		return null;
	}

	public void send(byte[] data) throws IOException {
		DatagramPacket dgPacketOut = new DatagramPacket(data, data.length,
			iaddr, iport);
		dgSocket.send(dgPacketOut);
	}

	public byte[] receive() throws IOException {
		byte ibuf[] = new byte[bufSize];
		dgPacketIn = new DatagramPacket(ibuf, ibuf.length);
		dgSocket.receive(dgPacketIn);
		iaddr = dgPacketIn.getAddress();
		iport = dgPacketIn.getPort();
		byte[] data = new byte[dgPacketIn.getLength()];
		System.arraycopy(dgPacketIn.getData(), 0, data, 0,
			dgPacketIn.getLength());
		return data;
	}

}
