diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java deleted file mode 100644 index eeb3cf241e31b0abd0a506ad65016bcded9a05f0..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduReceiver.java +++ /dev/null @@ -1,82 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import java.net.*; -import java.io.*; - -import edu.nps.moves.dis7.*; -import edu.nps.moves.dis7.enumerations.*; -import edu.nps.moves.dis7.util.*; - -public class BRE_KNO_MCC_PC1_MCAST_PduReceiver -{ - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.DEFAULT_MULTICAST_ADDRESS; - public static final boolean USE_FAST_ESPDU = false; - - - public static void main(String args[]) - { - PduFactory factory; - MulticastSocket socket; - InetAddress address; - DatagramPacket packet; - - try { - - System.out.println("BRE_KNO_MCC_PC2_MCAST_PduReceiver started..."); - if (args.length == 2) { - socket = new MulticastSocket(Integer.parseInt(args[0])); - address = InetAddress.getByName(args[1]); - } - else { - System.out.println("Usage: BRE_KNO_MCC_PC2_MCAST_PduReceiver <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC2_MCAST_PduReceiver " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - socket = new MulticastSocket(DEFAULT_MULTICAST_PORT); - address = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS); - } - socket.joinGroup(address); - - factory = new PduFactory(); - - while (true) // Loop infinitely, receiving datagrams - { - byte buffer[] = new byte[1500]; // typical MTU size - - packet = new DatagramPacket(buffer, buffer.length); // reset - - socket.receive(packet); - - Pdu pdu = factory.createPdu(packet.getData()); - if (pdu != null) { - DISPDUType currentPduType = pdu.getPduType(); //short currentPduType = pdu.getPduType(); - String currentPduTypeName = pdu.getClass().getName(); - DISProtocolFamily currentProtocolFamilyID = pdu.getProtocolFamily(); //short currentProtocolFamilyID = pdu.getProtocolFamily(); - //String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName(); - - StringBuilder message = new StringBuilder(); - message.append("received DIS PDU "); - if (currentPduType.getValue() < 10) - message.append(" "); - message.append(currentPduType.getValue()); - String currentPduTypePadded = String.format("%-34s", currentPduType); // - indicates right padding of whitespace - message.append(" " ).append(currentPduTypePadded); - String currentPduTypeNamePadded = String.format("%-49s", currentPduTypeName); // - indicates right padding of whitespace - message.append(" of type ").append(currentPduTypeNamePadded); // package.class name - message.append(" (protocolFamily ").append(currentProtocolFamilyID); -// message.append(" ").append(currentPduFamilyName); // class name is also available - message.append(")"); - System.out.println(message.toString()); - } - else - System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error..."); - } - } - catch (IOException e) { - System.out.println("Problem with BRE_KNO_MCC_PC2_MCAST_PduReceiver, see exception trace:"); - System.out.println(e); - } - finally { - System.out.println("BRE_KNO_MCC_PC2_MCAST_PduReceiver complete."); - } - } -} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java index 9a6456ed508194070123884089a8613092be81ab..3e4623ff4e7049b8dc41f3e5845aaf1cfe000b65 100644 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java @@ -1,11 +1,8 @@ package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; -import edu.nps.moves.dis7.CommentPdu; import edu.nps.moves.dis7.Pdu; -import edu.nps.moves.dis7.VariableDatum; import java.net.InetAddress; import java.net.UnknownHostException; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -16,6 +13,7 @@ public class BRE_KNO_MCC_PC2_Controller static boolean keepRunningMainThread = false; static BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver pc2_pc1_receiver; static BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender pc2_pc3_sender; + static BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver pc2_pc3_receiver; static InetAddress mcastIPPC1; static InetAddress ipPC3; @@ -24,12 +22,10 @@ public class BRE_KNO_MCC_PC2_Controller public static void main(String[] args) throws UnknownHostException { - mcastIPPC1 = InetAddress.getByName("239.1.2.3"); portPC1 = 2342; - ipPC3 = InetAddress.getByName("172.20.156.94"); - portPC3 = 1719; + portPC3 = 2343; pc2_pc1_receiver = new BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver(); pc2_pc1_receiver.resetMcastMessagesToSend(); @@ -38,6 +34,8 @@ public class BRE_KNO_MCC_PC2_Controller pc2_pc1_receiver.run(mcastIPPC1, portPC1); pc2_pc3_sender = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender(); + pc2_pc3_receiver = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver(); + pc2_pc3_receiver.run(portPC3); //start main thread keepRunningMainThread = true; @@ -46,7 +44,6 @@ public class BRE_KNO_MCC_PC2_Controller public static void run() { - while (keepRunningMainThread) { List<Pdu> tempSet = pc2_pc1_receiver.getMCASTMessagesToSend(); @@ -55,10 +52,15 @@ public class BRE_KNO_MCC_PC2_Controller pc2_pc3_sender.setKeepRunning(true); pc2_pc3_sender.setListToSend(tempSet); - if (!pc2_pc3_sender.isRunning()) + if (!pc2_pc3_sender.getIsRunning()) { pc2_pc3_sender.run(ipPC3, portPC3); } + + if (!pc2_pc3_receiver.getIsRunning()) + { + pc2_pc3_receiver.run(portPC3); + } } else { diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java index 9c45727d380815c3c15f3befcd2230d64f317bb7..56bb51e7c3ca2cbf103fdf0177909bae7c8d4d26 100644 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java @@ -12,7 +12,8 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver { +public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver +{ public static final boolean USE_FAST_ESPDU = false; static List<Integer> savedMCASTMessages = new ArrayList(); @@ -20,16 +21,17 @@ public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver { static Mutex mutex = new Mutex(); static boolean keepRunning = false; static boolean isRunning = false; - - public static void run(InetAddress addr, int port) { + + public static void run(InetAddress addr, int port) + { PduFactory factory; MulticastSocket socket; InetAddress address; DatagramPacket packet; - try { + try + { isRunning = true; - System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver started..."); address = addr; socket = new MulticastSocket(port); socket.joinGroup(address); @@ -44,81 +46,104 @@ public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver { socket.receive(packet); Pdu pdu = factory.createPdu(packet.getData()); - if (pdu != null && (pdu.getPduType() == DISPDUType.COMMENT)) { - + if (pdu != null && (pdu.getPduType() == DISPDUType.COMMENT)) + { + if (!savedMCASTMessages.contains(pdu.getTimestamp())) { System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage."); savedMCASTMessages.add(pdu.getTimestamp()); - - try { + + try + { mutex.acquire(); mcastMessagesToSend.add(pdu); mutex.release(); - - System.out.println("Added to SendList and saved in archiv."); - } catch (InterruptedException ex) { + + System.out.println("Added to SendList and saved in archiv."); + } + catch (InterruptedException ex) + { Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); - } + } } else { - System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage. Is already in list. Nothing added to SendList."); - } - - } else { + System.out.println("BRE_KNO_MCC_PC1_MCAST received Massage. Is already in list. Nothing added to SendList."); + } + + } + else + { System.out.println("received packet but pdu is null or not a PDU from type COMMENT"); } } - } catch (IOException e) { + } + catch (IOException e) + { System.out.println("Problem with BRE_KNO_MCC_PC1_MCAST_PduReceiver, see exception trace:"); System.out.println(e); - } finally { + } + finally + { System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver complete."); } - + isRunning = false; } - public boolean isRunning(){ - return isRunning; + public boolean isRunning() + { + return isRunning; } - + public void setKeepRunning(boolean k) { keepRunning = k; } - - public void resetSavedMCASTMessagesList(){ - try { + + public void resetSavedMCASTMessagesList() + { + try + { mutex.acquire(); savedMCASTMessages.clear(); mutex.release(); - } catch (InterruptedException ex) { + } + catch (InterruptedException ex) + { Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); } } - - public void resetMcastMessagesToSend(){ - try { + + public void resetMcastMessagesToSend() + { + try + { mutex.acquire(); mcastMessagesToSend.clear(); mutex.release(); - } catch (InterruptedException ex) { + } + catch (InterruptedException ex) + { Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); } } - public List<Pdu> getMCASTMessagesToSend(){ + public List<Pdu> getMCASTMessagesToSend() + { List<Pdu> temp = null; - try { + try + { mutex.acquire(); temp = new ArrayList(mcastMessagesToSend); - mutex.release(); - } catch (InterruptedException ex) { + mutex.release(); + } + catch (InterruptedException ex) + { Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); } - + return temp; } } diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java deleted file mode 100755 index 91cc80158da29e03e07b750d4b49add6511d8f71..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java +++ /dev/null @@ -1,178 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import java.io.*; -import java.net.*; -import java.util.*; - -import edu.nps.moves.dis7.*; -import edu.nps.moves.dis7.enumerations.*; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * This is an example that sends many/most types of PDUs. Useful for testing standards - * compliance or getting a full set of PDUs. It also writes the generated PDUs to an XML file. - * Adapted from OpenDIS library example package edu.nps.moves.examples - * - * @author DMcG - * @version $Id:$ - */ -public class BRE_KNO_MCC_PC2_PC1_MCAST_PduSender -{ - /** Default multicast group address we send on. */ - public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.3"; - - /** Default multicast port used, matches Wireshark DIS capture default */ - public static final int DEFAULT_MULTICAST_PORT = 2342; - - private int port; - InetAddress multicastAddress; - - public BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(int port, String multicast) { - try - { - this.port = port; - multicastAddress = InetAddress.getByName(multicast); - if (!multicastAddress.isMulticastAddress()) - { - System.out.println("Not a multicast address: " + multicast); - } - } - catch (UnknownHostException e) { - System.out.println("Unable to open socket: " + e); - } - } - - public void run(int numbOfPDUS) - { - System.out.println("BRE_KNO_MCC_PC2_MCAST_PduSender started..."); - System.out.println("Generate PDUs and note issues, if any..."); - - List<Pdu> generatedPdusList = createPDU(numbOfPDUS); - - // Send the PDUs we created - System.out.println("Send the " + generatedPdusList.size() + " PDUs we created..."); - - try - { - InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS); - MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT); - socket.joinGroup(localMulticastAddress); - - for (int idx = 0; idx < generatedPdusList.size(); idx++) - { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DataOutputStream dos = new DataOutputStream(baos); - byte[] buffer; - - Pdu aPdu = generatedPdusList.get(idx); - try { - aPdu.marshal(dos); - } catch (Exception ex) { - Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); - } - - buffer = baos.toByteArray(); - DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT); - socket.send(packet); - try { - Thread.sleep(100L); - } catch (InterruptedException ex) { - } - String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue()); - String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace - System.out.print ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded ); - System.out.println(" of type " + aPdu.getClass().getName()); - } - } - catch (IOException e) - { - System.out.println(e); - } - } - - public static void main(String args[]) - { - if (args.length == 2) - { - BRE_KNO_MCC_PC2_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(Integer.parseInt(args[0]), args[1]); - sender.run(5); - } - else - { - System.out.println("Usage: BRE_KNO_MCC_PC2_MCAST_PduSender <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC2_MCAST_PduSender " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - BRE_KNO_MCC_PC2_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); - sender.run(5); - } - System.out.println("BRE_KNO_MCC_PC2_MCAST_PduSender complete."); - } - - private List<Pdu> createPDU(int numbOfPDUs) - { - List<Pdu> list = new ArrayList<>(); - List<Short> entityIDs = new ArrayList<>(); - Random r = new Random(); - - //generate Entity ID (no douplications) - for (int i = 0; i < numbOfPDUs; i++) - { - short temp = (short) r.nextInt(); - while (entityIDs.contains(temp)) - { - temp = (short) r.nextInt(); - } - entityIDs.add(temp); - } - - // - for (int i = 0; i < numbOfPDUs; i++){ - EntityStatePdu myPdu = new EntityStatePdu(); - - //ID - EntityID tempID = new EntityID(); - tempID.setEntityID(entityIDs.get(i)); - myPdu.setEntityID(tempID); - - //Enemy or Friend - myPdu.setForceId(ForceID.FRIENDLY); - - //location - Vector3Double tempLoc = new Vector3Double(); - tempLoc.setX(r.nextInt(1000) + r.nextDouble()); - tempLoc.setY(r.nextInt(1000) + r.nextDouble()); - tempLoc.setZ(r.nextInt(1000) + r.nextDouble()); - - myPdu.setEntityLocation(tempLoc); - - //orientation - EulerAngles tempOri = new EulerAngles(); - tempOri.setPhi(r.nextFloat()); - tempOri.setPsi(r.nextFloat()); - tempOri.setTheta(r.nextFloat()); - - myPdu.setEntityOrientation(tempOri); - - - //velocity - Vector3Double tempVel = new Vector3Double(); - tempVel.setX(r.nextDouble()); - tempVel.setY(r.nextDouble()); - tempVel.setZ(r.nextDouble()); - - myPdu.setEntityLocation(tempVel); - - -// Category? Country? Domain?... -// EntityType tempType = new EntityType(); -// tempType.set -// myPdu.setEntityType(tempType) - - list.add(myPdu); - } - - - return list; - } -} - diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java index 6ea4fbc68c9418bcd9084df1c51f837a7b5c92ba..2d2e16806926ecc00355cc5bc525792349ebb655 100644 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java @@ -1,81 +1,53 @@ package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; -import MV3500Cohort2019JulySeptember.homework4.Knobeloch.*; -import java.net.*; -import java.io.*; - -import edu.nps.moves.dis7.*; -import edu.nps.moves.dis7.enumerations.*; -import edu.nps.moves.dis7.util.*; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.SocketException; public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver { - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.DEFAULT_MULTICAST_ADDRESS; - public static final boolean USE_FAST_ESPDU = false; - public static void main(String args[]) - { - PduFactory factory; - MulticastSocket socket; - InetAddress address; - DatagramPacket packet; + static boolean keepRunning = false; + static boolean isRunning = false; + + static int portPC3; - try { - System.out.println("BRE_KNO_MCC_PC2_UNICAST_PduReceiver started..."); - if (args.length == 2) { - socket = new MulticastSocket(Integer.parseInt(args[0])); - address = InetAddress.getByName(args[1]); - } - else { - System.out.println("Usage: BRE_KNO_MCC_PC2_UNICAST_PduReceiver <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC2_UNICAST_PduReceiver " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - socket = new MulticastSocket(DEFAULT_MULTICAST_PORT); - address = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS); - } - socket.joinGroup(address); + public static void run(int port) + { + portPC3 = port; + isRunning = true; - factory = new PduFactory(); + try (DatagramSocket socket = new DatagramSocket(port)) + { - while (true) // Loop infinitely, receiving datagrams - { - byte buffer[] = new byte[1500]; // typical MTU size + byte[] buffer = new byte[65507]; - packet = new DatagramPacket(buffer, buffer.length); // reset + socket.setSoTimeout(10000); - socket.receive(packet); + while (true) + { + DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); - Pdu pdu = factory.createPdu(packet.getData()); - if (pdu != null) { - DISPDUType currentPduType = pdu.getPduType(); //short currentPduType = pdu.getPduType(); - String currentPduTypeName = pdu.getClass().getName(); - DISProtocolFamily currentProtocolFamilyID = pdu.getProtocolFamily(); //short currentProtocolFamilyID = pdu.getProtocolFamily(); - //String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName(); + socket.receive(datagramPacket); - StringBuilder message = new StringBuilder(); - message.append("received DIS PDU "); - if (currentPduType.getValue() < 10) - message.append(" "); - message.append(currentPduType.getValue()); - String currentPduTypePadded = String.format("%-34s", currentPduType); // - indicates right padding of whitespace - message.append(" " ).append(currentPduTypePadded); - String currentPduTypeNamePadded = String.format("%-49s", currentPduTypeName); // - indicates right padding of whitespace - message.append(" of type ").append(currentPduTypeNamePadded); // package.class name - message.append(" (protocolFamily ").append(currentProtocolFamilyID); -// message.append(" ").append(currentPduFamilyName); // class name is also available - message.append(")"); - System.out.println(message.toString()); + String receivedMessage = new String(datagramPacket.getData()); + System.out.println(receivedMessage); + } + } + catch (SocketException e) + { + isRunning = false; + e.printStackTrace(); + } + catch (IOException e) + { + isRunning = false; + System.out.println("Timeout. Client is closing."); } - else - System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error..."); - } - } - catch (IOException e) { - System.out.println("Problem with BRE_KNO_MCC_PC2_UNICAST_PduReceiver, see exception trace:"); - System.out.println(e); } - finally { - System.out.println("BRE_KNO_MCC_PC2_UNICAST_PduReceiver complete."); + + public boolean getIsRunning(){ + return isRunning; } - } } diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java index 5c95c3b366820a052de6097a9c705242fc5cfef1..b4a80d14e7c932af6517460278c205621eb8a715 100755 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java @@ -90,7 +90,7 @@ public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender } } - public boolean isRunning() + public boolean getIsRunning() { return isRunning; } diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java index f7f6de6976327cc3c90bdc2928c93f75821cf6e1..99512720b737b8da5633e7c832b89482149755a2 100644 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java @@ -1,61 +1,82 @@ package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; -import com.sun.corba.se.impl.orbutil.concurrent.Mutex; import java.net.*; import java.io.*; import edu.nps.moves.dis7.*; import edu.nps.moves.dis7.util.PduFactory; import java.util.ArrayList; -import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver { + static boolean keepRunning = false; static boolean isRunning = false; - + static int portPC3; + static InetAddress ipPC2; + + public static void main() + { + + portPC3 = 2343; + try + { + ipPC2 = InetAddress.getByName("172.20.148.181"); + } + catch (UnknownHostException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); + } + + run(); + } public static void run() { isRunning = true; byte[] buffer = new byte[65507]; - portPC3 = 2343; - + try { DatagramSocket clientSocket = new DatagramSocket(portPC3); while (keepRunning) { DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); - + try { - clientSocket.receive(datagramPacket); + System.out.println("waiting for receiving message..."); + clientSocket.receive(datagramPacket); + System.out.println("Message received."); + PduFactory factory = new PduFactory(); - + Pdu tempPdu = factory.createPdu(datagramPacket.getData()); StringBuilder message = new StringBuilder(); message.append("Pdu type: "); message.append(tempPdu.getPduType()); message.append(" Intern ID: "); message.append(tempPdu.getTimestamp()); - + //extract comments - CommentPdu commentPdu = (CommentPdu)tempPdu; // cast to precise type - ArrayList<VariableDatum> payloadList = (ArrayList)commentPdu.getVariableDatums(); - + CommentPdu commentPdu = (CommentPdu) tempPdu; // cast to precise type + ArrayList<VariableDatum> payloadList = (ArrayList) commentPdu.getVariableDatums(); + for (VariableDatum variableDatum : payloadList) { String nextComment = new String(variableDatum.getVariableDatumValue()); // convert byte[] to String message.append(nextComment); - } - - System.out.println(message); - } + } + + System.out.println(message); + + sendAnswer(tempPdu.getTimestamp()); + + } catch (IOException ex) { Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); @@ -65,6 +86,33 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver catch (SocketException ex) { Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); - } + } + } + + public boolean isRunning() + { + return isRunning; + } + + public void setKeepRunning(boolean k) + { + keepRunning = k; + } + + static void sendAnswer(int internID) + { + //Sending via UNICAST + + String message = ("PC3: Packet with InternID " + internID + " received."); + DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), ipPC2, portPC3); + try + { + DatagramSocket socket = new DatagramSocket(portPC3); + socket.send(packet); + } + catch (IOException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + } } } diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java deleted file mode 100755 index c444e2fd7cff84ec3a55453e9061f896ca1e20c9..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java +++ /dev/null @@ -1,178 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import java.io.*; -import java.net.*; -import java.util.*; - -import edu.nps.moves.dis7.*; -import edu.nps.moves.dis7.enumerations.*; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * This is an example that sends many/most types of PDUs. Useful for testing standards - * compliance or getting a full set of PDUs. It also writes the generated PDUs to an XML file. - * Adapted from OpenDIS library example package edu.nps.moves.examples - * - * @author DMcG - * @version $Id:$ - */ -public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender -{ - /** Default multicast group address we send on. */ - public static final String DEFAULT_MULTICAST_ADDRESS = "239.1.2.3"; - - /** Default multicast port used, matches Wireshark DIS capture default */ - public static final int DEFAULT_MULTICAST_PORT = 2343; - - private int port; - InetAddress multicastAddress; - - public BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(int port, String multicast) { - try - { - this.port = port; - multicastAddress = InetAddress.getByName(multicast); - if (!multicastAddress.isMulticastAddress()) - { - System.out.println("Not a multicast address: " + multicast); - } - } - catch (UnknownHostException e) { - System.out.println("Unable to open socket: " + e); - } - } - - public void run(int numbOfPDUS) - { - System.out.println("BRE_KNO_MCC_PC3_UNICAST_PduSender started..."); - System.out.println("Generate PDUs and note issues, if any..."); - - List<Pdu> generatedPdusList = createPDU(numbOfPDUS); - - // Send the PDUs we created - System.out.println("Send the " + generatedPdusList.size() + " PDUs we created..."); - - try - { - InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS); - MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT); - socket.joinGroup(localMulticastAddress); - - for (int idx = 0; idx < generatedPdusList.size(); idx++) - { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DataOutputStream dos = new DataOutputStream(baos); - byte[] buffer; - - Pdu aPdu = generatedPdusList.get(idx); - try { - aPdu.marshal(dos); - } catch (Exception ex) { - Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); - } - - buffer = baos.toByteArray(); - DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT); - socket.send(packet); - try { - Thread.sleep(100L); - } catch (InterruptedException ex) { - } - String currentPduTypeValuePadded = String.format("%2s", aPdu.getPduType().getValue()); - String currentPduTypePadded = String.format("%-34s", aPdu.getPduType()); // - indicates right padding of whitespace - System.out.print ("Sent DIS PDU " + currentPduTypeValuePadded + " " + currentPduTypePadded ); - System.out.println(" of type " + aPdu.getClass().getName()); - } - } - catch (IOException e) - { - System.out.println(e); - } - } - - public static void main(String args[]) - { - if (args.length == 2) - { - BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender sender = new BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(Integer.parseInt(args[0]), args[1]); - sender.run(5); - } - else - { - System.out.println("Usage: BRE_KNO_MCC_PC3_UNICAST_PduSender <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC3_UNICAST_PduSender " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender sender = new BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); - sender.run(5); - } - System.out.println("BRE_KNO_MCC_PC3_UNICAST_PduSender complete."); - } - - private List<Pdu> createPDU(int numbOfPDUs) - { - List<Pdu> list = new ArrayList<>(); - List<Short> entityIDs = new ArrayList<>(); - Random r = new Random(); - - //generate Entity ID (no douplications) - for (int i = 0; i < numbOfPDUs; i++) - { - short temp = (short) r.nextInt(); - while (entityIDs.contains(temp)) - { - temp = (short) r.nextInt(); - } - entityIDs.add(temp); - } - - // - for (int i = 0; i < numbOfPDUs; i++){ - EntityStatePdu myPdu = new EntityStatePdu(); - - //ID - EntityID tempID = new EntityID(); - tempID.setEntityID(entityIDs.get(i)); - myPdu.setEntityID(tempID); - - //Enemy or Friend - myPdu.setForceId(ForceID.FRIENDLY); - - //location - Vector3Double tempLoc = new Vector3Double(); - tempLoc.setX(r.nextInt(1000) + r.nextDouble()); - tempLoc.setY(r.nextInt(1000) + r.nextDouble()); - tempLoc.setZ(r.nextInt(1000) + r.nextDouble()); - - myPdu.setEntityLocation(tempLoc); - - //orientation - EulerAngles tempOri = new EulerAngles(); - tempOri.setPhi(r.nextFloat()); - tempOri.setPsi(r.nextFloat()); - tempOri.setTheta(r.nextFloat()); - - myPdu.setEntityOrientation(tempOri); - - - //velocity - Vector3Double tempVel = new Vector3Double(); - tempVel.setX(r.nextDouble()); - tempVel.setY(r.nextDouble()); - tempVel.setZ(r.nextDouble()); - - myPdu.setEntityLocation(tempVel); - - -// Category? Country? Domain?... -// EntityType tempType = new EntityType(); -// tempType.set -// myPdu.setEntityType(tempType) - - list.add(myPdu); - } - - - return list; - } -} -