package fr.umlv.guess;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.nio.charset.Charset;


public class DisplayUDPServer {
	private final static int MAX_BUFFER_SIZE = 1024;
	private final static Charset TRANSFER_CHARSET = Charset.forName("iso-8859-15");
	private final DatagramSocket ds;

	public DisplayUDPServer(int listeningPort) throws SocketException {
		ds = new DatagramSocket(listeningPort);
	}
	
	public void launch() throws IOException {
		byte[] receiveBuffer = new byte[MAX_BUFFER_SIZE];
		DatagramPacket dp = new DatagramPacket(receiveBuffer, 0, MAX_BUFFER_SIZE);
		while (!Thread.currentThread().isInterrupted()) {
			ds.receive(dp);
			String msg = new String(receiveBuffer, 0, dp.getLength(), TRANSFER_CHARSET);
			System.out.println(dp.getSocketAddress() + " send me: " + msg);
			dp.setLength(MAX_BUFFER_SIZE);
		}
		ds.close();
	}
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		if (args.length < 1) {
			System.err.println("Usage: java fr.umlv.guess.DisplayUDPServer <listeningPort>");
			System.exit(0);
		}
		DisplayUDPServer server = new DisplayUDPServer(Integer.parseInt(args[0]));
		server.launch();
	}
}
