package MV3500Cohort2018JanuaryMarch.homework2; import java.io.*; import java.net.*; /** * homework assignment */ public class AngelMulticastReceiver { /** socket value of shared interest */ public static final String MULTICAST_ADDRESS = "239.1.2.15"; /** socket value of shared interest */ public static final int DESTINATION_PORT = 1717; /** How many routers can be crossed */ static final int TTL = 10; /** run the program * @param args command-line arguments, string parameters (unused) */ @SuppressWarnings("deprecation") public static void main(String[] args) { try { // This is a java/IPv6 problem. You should also add it to the // arguments used to start the app, eg -Djava.net.preferIPv4Stack=true // set in the "run" section of preferences. Also, typically // netbeans must be restarted after these settings. // https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache System.setProperty("java.net.preferIPv4Stack", "true"); MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT); multicastSocket.setTimeToLive(TTL); InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS); System.out.println(multicastAddress); // Join group useful on receiving side multicastSocket.joinGroup(multicastAddress); // You can join multiple groups here while(true) { byte[] packetArray = new byte[1500]; DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length); multicastSocket.receive(packet); ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData()); DataInputStream dis = new DataInputStream(bais); char type = dis.readChar(); if (type == 'A') { float firstNumber = dis.readFloat(); float secondNumber = dis.readFloat(); float thirdNumber = dis.readFloat(); System.out.println("Abrams POS: (x: " + firstNumber + ", y: " + secondNumber +", z: " + thirdNumber + " )"); } if (type == 'B') { int lngth = dis.readInt(); String informationLine = ""; for(int i=0; i<lngth; i++) { informationLine += dis.readChar(); } System.out.println(informationLine); } } } catch(Exception e) { System.out.println(e); } } }