From d7bc6cf576daa2f36108b023b43c7c003b9a27d8 Mon Sep 17 00:00:00 2001 From: bkii <bkii@10.0.0.123> Date: Wed, 11 Sep 2019 17:19:44 -0700 Subject: [PATCH] Almost done --- .../BRE_KNO_MCC/AllPduReceiver.java | 95 -------- .../BRE_KNO_MCC/AllPduSender.java | 152 ------------- .../BRE_KNO_MCC_PC1_MCAST_PduSender.java | 214 +++++++----------- .../BRE_KNO_MCC_PC2_Controller.java | 70 +++--- ...BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java | 57 +++-- ...E_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java | 44 ++-- 6 files changed, 162 insertions(+), 470 deletions(-) delete mode 100644 assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduReceiver.java delete mode 100755 assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduSender.java diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduReceiver.java deleted file mode 100644 index c934694a72..0000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduReceiver.java +++ /dev/null @@ -1,95 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import MV3500Cohort2019JulySeptember.homework4.Brennenstuhl.test.*; -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.util.ArrayList; - -public class AllPduReceiver -{ - public static final int DEFAULT_MULTICAST_PORT = AllPduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = AllPduSender.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("DisExamplesOpenDis7.AllPduReceiver started..."); - if (args.length == 2) { - socket = new MulticastSocket(Integer.parseInt(args[0])); - address = InetAddress.getByName(args[1]); - } - else { - System.out.println("Usage: AllPduReceiver <port> <multicast group>"); - System.out.println("Default: AllPduReceiver " + 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(" "); // column spacing - 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()); - - switch (currentPduType) // using enumeration values from edu.​nps.​moves.​dis7.​enumerations.​DISPDUType - { - case COMMENT: - CommentPdu commentPdu = (CommentPdu)pdu; // cast to precise type - ArrayList<VariableDatum> payloadList = (ArrayList)commentPdu.getVariableDatums(); - for (VariableDatum variableDatum : payloadList) - { - String nextComment = new String(variableDatum.getVariableDatumValue()); // convert byte[] to String - System.out.println("\"" + nextComment + "\""); - } - } - } - 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 DisExamplesOpenDis7.AllPduReceiver, see exception trace:"); - System.out.println(e); - } - finally { - System.out.println("DisExamplesOpenDis7.AllPduReceiver complete."); - } - } -} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduSender.java deleted file mode 100755 index ad0d8ec079..0000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/AllPduSender.java +++ /dev/null @@ -1,152 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import MV3500Cohort2019JulySeptember.homework4.Brennenstuhl.test.*; -import java.io.*; -import java.net.*; -import java.util.*; - -import edu.nps.moves.dis7.*; -import edu.nps.moves.dis7.enumerations.*; - -/** - * 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 AllPduSender -{ - /** 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 = 3000; - - private int port; - InetAddress multicastAddress; - - public AllPduSender(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() - { - - try - { - System.out.println("Generate PDUs and note issues, if any..."); - List<Pdu> generatedPdusList = new ArrayList<>(); - - // Loop through all the enumerated PDU types, create a PDU for each type, - // add that PDU to generatedPdusList, and send each one - -// System.out.println("PDU " + pdu.getValue() + " " + pdu.name() + " " + pdu.getDescription()); // diagnostic - - Pdu aPdu = null; // edu.​nps.​moves7.​dis.PDU superclass for all PDUs, in preparation for custom assignment - - - - - - - //*************************************************************************** - CommentPdu newCommentPdu = new CommentPdu(); - ArrayList<VariableDatum> payloadList = new ArrayList<VariableDatum>(); - - ArrayList<String> commentsList = new ArrayList<>(); - commentsList.add("Hello CommentPDU"); - commentsList.add("Chuck Norris is comming to town from IP-Adress " + DEFAULT_MULTICAST_ADDRESS + " with Port " + DEFAULT_MULTICAST_PORT); - - if (!commentsList.isEmpty()) - System.out.println("Preparing CommentPDU:"); - - for (String comment : commentsList) - { - VariableDatum newVariableDatum = new VariableDatum(); - newVariableDatum.setVariableDatumValue (comment.getBytes()); // conversion - //newVariableDatum.setVariableDatumLength(comment.getBytes().length * 8); // bits, not bytes, see spec and javadoc - // alternatively, you do not need to set this and the marshaller will figure it out from the byte array - // (see javadoc for VariableDatum.setVariableDatumLength()) - payloadList.add(newVariableDatum); - System.out.println(" \"" + comment + "\""); - } - newCommentPdu.setVariableDatums(payloadList); - - aPdu = newCommentPdu; // hand off for sending - //***************************************************************************** - - generatedPdusList.add(aPdu); - - - 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; - - aPdu = generatedPdusList.get(idx); - try - { - aPdu.marshal(dos); - - 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 (Exception ex) { - System.out.println("Marshaling error" + ex); - } - } - // write the PDUs out to an XML file. - //PduContainer container = new PduContainer(); - //container.setPdus(generatedPdus); - //container.marshallToXml("examplePdus.xml"); - } - catch (IOException e) - { - System.out.println(e); - } - } - - public static void main(String args[]) - { - if (args.length == 2) - { - AllPduSender sender = new AllPduSender(Integer.parseInt(args[0]), args[1]); - sender.run(); - } - else - { - System.out.println("Usage: AllPduSender <port> <multicast group>"); - System.out.println("Default: AllPduSender " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - AllPduSender sender = new AllPduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); - sender.run(); - } - System.out.println("DisExamplesOpenDis7.AllPduSender complete."); - } -} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduSender.java index 8cb5ac2f80..4c1fb2bcae 100755 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduSender.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC1_MCAST_PduSender.java @@ -5,174 +5,112 @@ 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_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_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 static final int DEFAULT_MULTICAST_PORT = 2342; + static boolean keepRunning = true; + + public void run(int numbOfPDUS) { - System.out.println("BRE_KNO_MCC_PC1_MCAST_PduSender started..."); + System.out.println("BRE_KNO_MCC_PC1_MCAST_PduSender started..."); System.out.println("Generate PDUs and note issues, if any..."); + int senderIntervall = 0; - List<Pdu> generatedPdusList = createPDU(numbOfPDUS); - - // Send the PDUs we created - System.out.println("Send the " + generatedPdusList.size() + " PDUs we created..."); + while (keepRunning){ + List<Pdu> generatedPdusList = createPDU(numbOfPDUS, senderIntervall); - try - { - InetAddress localMulticastAddress = InetAddress.getByName(DEFAULT_MULTICAST_ADDRESS); - MulticastSocket socket = new MulticastSocket(DEFAULT_MULTICAST_PORT); - socket.joinGroup(localMulticastAddress); + // Send the PDUs we created + System.out.println("Send the " + generatedPdusList.size() + " PDUs we created..."); - for (int idx = 0; idx < generatedPdusList.size(); idx++) + try { - 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_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); - } + 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; - buffer = baos.toByteArray(); - DatagramPacket packet = new DatagramPacket(buffer, buffer.length, localMulticastAddress, DEFAULT_MULTICAST_PORT); - socket.send(packet); - try { - Thread.sleep(100L); - } catch (InterruptedException ex) { + Pdu aPdu = generatedPdusList.get(idx); + try + { + aPdu.marshal(dos); + } + catch (Exception ex) + { + Logger.getLogger(BRE_KNO_MCC_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); + catch (IOException e) + { + System.out.println(e); + } + + senderIntervall++; + try + { + Thread.sleep(2000); + } + catch (InterruptedException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + } } } public static void main(String args[]) { - if (args.length == 2) - { - BRE_KNO_MCC_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC1_MCAST_PduSender(Integer.parseInt(args[0]), args[1]); - sender.run(5); - } - else - { - System.out.println("Usage: BRE_KNO_MCC_PC1_MCAST_PduSender <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC1_MCAST_PduSender " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - BRE_KNO_MCC_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC1_MCAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); - sender.run(5); - } - System.out.println("BRE_KNO_MCC_PC1_MCAST_PduSender complete."); + BRE_KNO_MCC_PC1_MCAST_PduSender sender = new BRE_KNO_MCC_PC1_MCAST_PduSender(); + sender.run(5); } - - private List<Pdu> createPDU(int numbOfPDUs) + + private List<Pdu> createPDU(int numbOfPDUs, int intervall) { - List<Pdu> list = new ArrayList<>(); - List<Short> entityIDs = new ArrayList<>(); - Random r = new Random(); - - //generate Entity ID (no douplications) + List<Pdu> list = new ArrayList(); + for (int i = 0; i < numbOfPDUs; i++) { - short temp = (short) r.nextInt(); - while (entityIDs.contains(temp)) + CommentPdu newCommentPdu = new CommentPdu(); + ArrayList<VariableDatum> payloadList = new ArrayList<VariableDatum>(); + + ArrayList<String> commentsList = new ArrayList<>(); + commentsList.add("Chuck Norris is comming to tow! " + "Warning " + i+1 + intervall*5); + + for (String comment : commentsList) { - temp = (short) r.nextInt(); + VariableDatum newVariableDatum = new VariableDatum(); + newVariableDatum.setVariableDatumValue(comment.getBytes()); + payloadList.add(newVariableDatum); } - 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) + newCommentPdu.setVariableDatums(payloadList); + newCommentPdu.setTimestamp(42 + i + intervall*5); - list.add(myPdu); + Pdu aPdu = newCommentPdu; + list.add(aPdu); } - - + return list; } } - 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 26236f9d39..9a6456ed50 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,67 +1,73 @@ 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; -public class BRE_KNO_MCC_PC2_Controller { - +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 InetAddress mcastIPPC1; - static InetAddress mcastIPPC3; + static InetAddress ipPC3; static int portPC1; static int portPC3; - - public void main(String[] args) throws UnknownHostException { - - mcastIPPC1 = InetAddress.getByName("239.1.2.3"); - portPC1 = 2342; - - mcastIPPC3 = InetAddress.getByName("239.1.2.3"); - portPC3 = 2343; - - + + 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; + pc2_pc1_receiver = new BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver(); pc2_pc1_receiver.resetMcastMessagesToSend(); pc2_pc1_receiver.resetSavedMCASTMessagesList(); pc2_pc1_receiver.setKeepRunning(true); //use this to terminate thread instead of killing it by hard pc2_pc1_receiver.run(mcastIPPC1, portPC1); - - + pc2_pc3_sender = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender(); - //start main thread keepRunningMainThread = true; run(); - } - - - public static void run() { - - while (keepRunningMainThread){ - - List<Pdu> tempSet = pc2_pc1_receiver.getMCASTMessagesToSend(); - if (tempSet != null && !tempSet.isEmpty() ) + } + + public static void run() + { + + while (keepRunningMainThread) + { + List<Pdu> tempSet = pc2_pc1_receiver.getMCASTMessagesToSend(); + if (tempSet != null && !tempSet.isEmpty()) { pc2_pc3_sender.setKeepRunning(true); pc2_pc3_sender.setListToSend(tempSet); - - if(pc2_pc3_sender.isRunning()){ - - } + + if (!pc2_pc3_sender.isRunning()) + { + pc2_pc3_sender.run(ipPC3, portPC3); + } } else { - try { + try + { Thread.sleep(2000); - } catch (InterruptedException ex) { + } + catch (InterruptedException ex) + { Logger.getLogger(BRE_KNO_MCC_PC2_Controller.class.getName()).log(Level.SEVERE, null, ex); } } 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 aec29bf162..5c95c3b366 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 @@ -4,6 +4,7 @@ import com.sun.corba.se.impl.orbutil.concurrent.Mutex; import java.util.*; import edu.nps.moves.dis7.*; +import edu.nps.moves.dis7.enumerations.DISPDUType; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; @@ -20,15 +21,14 @@ public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender static List<Pdu> messagesToSend = new ArrayList(); static boolean keepRunning = false; static boolean isRunning = false; - + static InetAddress pc3IP; static int portPC3; - public static void run(InetAddress address, int port) { isRunning = true; - + pc3IP = address; portPC3 = port; @@ -43,32 +43,39 @@ public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender messagesToSend.remove(0); mutex.release(); - //Sending via UNICAST - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DataOutputStream dos = new DataOutputStream(baos); - byte[] buffer; - - try - { - tempPdu.marshal(dos); - } - catch (Exception ex) + if (tempPdu.getPduType() != DISPDUType.COMMENT) { - Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + System.out.println("Received Message Is Not A CommentPDU. Skiped."); } - buffer = baos.toByteArray(); - DatagramPacket packet = new DatagramPacket(buffer, buffer.length, pc3IP, portPC3); - - try + else { - DatagramSocket socket = new DatagramSocket(portPC3, pc3IP); - socket.send(packet); + //Sending via UNICAST + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos); + byte[] buffer; + + try + { + tempPdu.marshal(dos); + } + catch (Exception ex) + { + Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + } + buffer = baos.toByteArray(); + DatagramPacket packet = new DatagramPacket(buffer, buffer.length, pc3IP, 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); + } } - catch (IOException ex) - { - Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); - } - + } else { 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 a01d9a9738..f7f6de6976 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 @@ -13,12 +13,9 @@ import java.util.logging.Logger; public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver { - static Mutex mutex = new Mutex(); - static List<Pdu> messagesToSend = new ArrayList(); static boolean keepRunning = false; static boolean isRunning = false; - static InetAddress pc3IP; static int portPC3; @@ -26,17 +23,7 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver { isRunning = true; byte[] buffer = new byte[65507]; - - try - { - pc3IP = InetAddress.getByName("127.0.0.1"); - portPC3 = 2343; - } - catch (UnknownHostException ex) - { - Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); - } - + portPC3 = 2343; try { @@ -49,34 +36,35 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver { clientSocket.receive(datagramPacket); PduFactory factory = new PduFactory(); + Pdu tempPdu = factory.createPdu(datagramPacket.getData()); StringBuilder message = new StringBuilder(); message.append("Pdu type: "); message.append(tempPdu.getPduType()); - message.append(" TimeStamp: "); + message.append(" Intern ID: "); message.append(tempPdu.getTimestamp()); - System.out.println(message); - } + //extract comments + 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); + } catch (IOException ex) { Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); } - - } - - } catch (SocketException ex) { Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); - } - - - - - - + } } } -- GitLab