import java.net.*;

public class ServerClient {
	private static int port = 7777;
	private static String ipAdress = "235.1.1.1";
	
	public static void main(String[] args) {
		
		//Spusteni vysilaciho serveru
		new Thread(new Runnable() {
			public void run() {
				try {
					DatagramSocket socket = new DatagramSocket();
					
					byte[] b = "Pozdrav vsem!".getBytes();
					DatagramPacket dgram;
					
					dgram = new DatagramPacket(b, b.length, InetAddress.getByName(ipAdress), port);
					
					while(true) {
						System.out.println("Server: sending " + b.length + " bytes to " +  dgram.getAddress() + ':' + dgram.getPort());
						socket.send(dgram);
						try {Thread.sleep(1000);}
						catch (InterruptedException e) {}
					}
				}
				catch (java.io.IOException e) {
					System.out.println(e.toString());
				}
			}
		}).start();
		
		//Spusteni prijimaciho klienta
		new Thread(new Runnable() {
			public void run() {
				try {
					byte[] b = new byte[400];
					DatagramPacket dgram = new DatagramPacket(b, b.length);
					MulticastSocket socket = new MulticastSocket(port); // must bind receive side
					socket.joinGroup(InetAddress.getByName(ipAdress));
					
					while(true) {
						socket.receive(dgram); // blocks until a datagram is received
						System.out.println("Client: received " + new String(dgram.getData()).trim()+ " bytes from " + dgram.getAddress());
						dgram.setLength(b.length); // must reset length field!
					}
				}
				catch (java.io.IOException e) {
					System.out.println(e.toString());
				}
			}
		}).start();
	}
}