package daryl; import java.io.*; import java.net.*; import common.*; import common.messages.*; public class ConnectionWatcher extends Thread implements Constants { private MulticastSocket multicastSocket; public ConnectionWatcher(int port) throws IOException { multicastSocket = new MulticastSocket(port); multicastSocket.connect(InetAddress.getByName(MCAST_ADDRESS), port); System.out.printf("Successfully connected to %s on port %d.\n", MCAST_ADDRESS, port); System.out.println("Listening to messages..."); } public void run() { while (true) { try { DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); multicastSocket.receive(packet); System.out.printf("Recieved packet of length %d\n", packet.getLength()); Message message = MessageAnalyzer.getMessage(packet.getData()); if (!(message instanceof PlayerMotionMessage)) continue; PlayerMotionMessage pmm = (PlayerMotionMessage)message; System.out.printf("Player %d moved to (%.2f, %.2f)\n", pmm.getPlayerId(), pmm.getPosition().getX(), pmm.getPosition().getY()); } catch (IOException er) { } catch (Exception er) { } } } public static void main(String[] args) { try { ConnectionWatcher watcher = new ConnectionWatcher(MCAST_PORT); watcher.start(); } catch (IOException er) { System.out.println("Failed to start connection watcher."); } } }