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 index a07ab479d855a9231c6f29a5da7afb4886477501..eeb3cf241e31b0abd0a506ad65016bcded9a05f0 100644 --- 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 @@ -9,26 +9,28 @@ import edu.nps.moves.dis7.util.*; public class BRE_KNO_MCC_PC1_MCAST_PduReceiver { - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC1_MCAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC1_MCAST_PduSender.DEFAULT_MULTICAST_ADDRESS; + 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("Knobeloch_PduReceiver started..."); + + 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: AllPduReceiver <port> <multicast group>"); - System.out.println("Default: AllPduReceiver " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); + 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); } @@ -70,11 +72,11 @@ public class BRE_KNO_MCC_PC1_MCAST_PduReceiver } } catch (IOException e) { - System.out.println("Problem with BRE_KNO_MCC_PC1_MCAST_PduReceiver, see exception trace:"); + 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_PC1_MCAST_PduReceiver complete."); + 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 new file mode 100644 index 0000000000000000000000000000000000000000..26236f9d393c2fdc5c519c539d0f2b7ae18c373e --- /dev/null +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_Controller.java @@ -0,0 +1,70 @@ +package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; + +import edu.nps.moves.dis7.Pdu; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +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 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; + + + 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() ) + { + pc2_pc3_sender.setKeepRunning(true); + pc2_pc3_sender.setListToSend(tempSet); + + if(pc2_pc3_sender.isRunning()){ + + } + } + else + { + try { + Thread.sleep(2000); + } 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_MCAST_MessageList.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_MessageList.java deleted file mode 100644 index c323c0aaf28c923f18832b9502be631483978039..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_MessageList.java +++ /dev/null @@ -1,18 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import java.util.HashSet; - - -public class BRE_KNO_MCC_PC2_MCAST_MessageList { - - HashSet<String> savedMCASTMessages = new HashSet(); - - public void addMassage(String str){ - savedMCASTMessages.add(str); - } - - public HashSet<String> getSavedMCASTMessages(){ - HashSet<String> temp = new HashSet(savedMCASTMessages); - return temp; - } -} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_PduReceiver.java deleted file mode 100644 index e392871b1835bc928ae6fd407c8ecad0345a8e4a..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_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_PC2_MCAST_PduReceiver -{ - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_MCAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_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_PC1_MCAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..9c45727d380815c3c15f3befcd2230d64f317bb7 --- /dev/null +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.java @@ -0,0 +1,124 @@ +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.enumerations.*; +import edu.nps.moves.dis7.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver { + + public static final boolean USE_FAST_ESPDU = false; + static List<Integer> savedMCASTMessages = new ArrayList(); + static List<Pdu> mcastMessagesToSend = new ArrayList(); + static Mutex mutex = new Mutex(); + static boolean keepRunning = false; + static boolean isRunning = false; + + public static void run(InetAddress addr, int port) { + PduFactory factory; + MulticastSocket socket; + InetAddress address; + DatagramPacket packet; + + try { + isRunning = true; + System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver started..."); + address = addr; + socket = new MulticastSocket(port); + socket.joinGroup(address); + + factory = new PduFactory(); + + while (keepRunning) + { + byte buffer[] = new byte[1500]; + packet = new DatagramPacket(buffer, buffer.length); + + socket.receive(packet); + + Pdu pdu = factory.createPdu(packet.getData()); + 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 { + mutex.acquire(); + mcastMessagesToSend.add(pdu); + mutex.release(); + + 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("received packet but pdu is null or not a PDU from type COMMENT"); + } + } + } catch (IOException e) { + System.out.println("Problem with BRE_KNO_MCC_PC1_MCAST_PduReceiver, see exception trace:"); + System.out.println(e); + } finally { + System.out.println("BRE_KNO_MCC_PC1_MCAST_PduReceiver complete."); + } + + isRunning = false; + } + + public boolean isRunning(){ + return isRunning; + } + + public void setKeepRunning(boolean k) + { + keepRunning = k; + } + + public void resetSavedMCASTMessagesList(){ + try { + mutex.acquire(); + savedMCASTMessages.clear(); + mutex.release(); + } catch (InterruptedException ex) { + Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public void resetMcastMessagesToSend(){ + try { + mutex.acquire(); + mcastMessagesToSend.clear(); + mutex.release(); + } catch (InterruptedException ex) { + Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); + } + } + + public List<Pdu> getMCASTMessagesToSend(){ + List<Pdu> temp = null; + try { + mutex.acquire(); + temp = new ArrayList(mcastMessagesToSend); + 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_MCAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java similarity index 91% rename from assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_PduSender.java rename to assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java index e7b704fe6e2ed66dffae4c4a2c23570c23ab40aa..91cc80158da29e03e07b750d4b49add6511d8f71 100755 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_MCAST_PduSender.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.java @@ -17,7 +17,7 @@ import java.util.logging.Logger; * @author DMcG * @version $Id:$ */ -public class BRE_KNO_MCC_PC2_MCAST_PduSender +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"; @@ -28,7 +28,7 @@ public class BRE_KNO_MCC_PC2_MCAST_PduSender private int port; InetAddress multicastAddress; - public BRE_KNO_MCC_PC2_MCAST_PduSender(int port, String multicast) { + public BRE_KNO_MCC_PC2_PC1_MCAST_PduSender(int port, String multicast) { try { this.port = port; @@ -69,7 +69,7 @@ public class BRE_KNO_MCC_PC2_MCAST_PduSender try { aPdu.marshal(dos); } catch (Exception ex) { - Logger.getLogger(BRE_KNO_MCC_PC2_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(BRE_KNO_MCC_PC2_PC1_MCAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); } buffer = baos.toByteArray(); @@ -95,14 +95,14 @@ public class BRE_KNO_MCC_PC2_MCAST_PduSender { if (args.length == 2) { - BRE_KNO_MCC_PC2_MCAST_PduSender sender = new BRE_KNO_MCC_PC2_MCAST_PduSender(Integer.parseInt(args[0]), args[1]); + 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_MCAST_PduSender sender = new 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."); diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java similarity index 95% rename from assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_PduReceiver.java rename to assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java index ddd25ac2dd90351d8179037a53d0520abdf4342a..6ea4fbc68c9418bcd9084df1c51f837a7b5c92ba 100644 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_PduReceiver.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver.java @@ -8,10 +8,10 @@ import edu.nps.moves.dis7.*; import edu.nps.moves.dis7.enumerations.*; import edu.nps.moves.dis7.util.*; -public class BRE_KNO_MCC_PC2_UNICAST_PduReceiver +public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver { - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC2_UNICAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_PC2_UNICAST_PduSender.DEFAULT_MULTICAST_ADDRESS; + 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[]) 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 new file mode 100755 index 0000000000000000000000000000000000000000..aec29bf162dc29c76759b40d04c4841bf425638a --- /dev/null +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.java @@ -0,0 +1,113 @@ +package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; + +import com.sun.corba.se.impl.orbutil.concurrent.Mutex; +import java.util.*; + +import edu.nps.moves.dis7.*; +import java.io.ByteArrayOutputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.net.DatagramPacket; +import java.net.DatagramSocket; +import java.net.InetAddress; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender +{ + + 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; + + + public static void run(InetAddress address, int port) + { + isRunning = true; + + pc3IP = address; + portPC3 = port; + + while (keepRunning) + { + try + { + mutex.acquire(); + if (!messagesToSend.isEmpty()) + { + Pdu tempPdu = messagesToSend.get(0); + 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) + { + 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, pc3IP); + socket.send(packet); + } + catch (IOException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + } + + } + else + { + mutex.release(); + keepRunning = false; + } + } + catch (InterruptedException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + } + } + } + + public boolean isRunning() + { + return isRunning; + } + + public void setKeepRunning(boolean k) + { + keepRunning = k; + } + + public void setListToSend(List<Pdu> pduSetToSend) + { + try + { + mutex.acquire(); + while (!pduSetToSend.isEmpty()) + { + messagesToSend.add(pduSetToSend.get(0)); + pduSetToSend.remove(0); + } + mutex.release(); + } + catch (InterruptedException 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_PC2_UNICAST_MessageList.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_MessageList.java deleted file mode 100644 index 7893cbe8c5ebc5aadc23d6fef8af45376be5ce88..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_MessageList.java +++ /dev/null @@ -1,18 +0,0 @@ -package MV3500Cohort2019JulySeptember.homework2.Brennenstuhl.BRE_KNO_MCC; - -import java.util.HashSet; - - -public class BRE_KNO_MCC_PC2_UNICAST_MessageList { - - HashSet<String> savedUNICASTMessages = new HashSet(); - - public void addMassage(String str){ - savedUNICASTMessages.add(str); - } - - public HashSet<String> getSavedUNICASTMessages(){ - HashSet<String> temp = new HashSet(savedUNICASTMessages); - return temp; - } -} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC2_UNICAST_PduSender.java deleted file mode 100755 index 1b57b522bc168a47df788ef924048e8bdeda862b..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_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_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_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_PC2_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_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_PC2_UNICAST_PduSender sender = new BRE_KNO_MCC_PC2_UNICAST_PduSender(Integer.parseInt(args[0]), args[1]); - sender.run(5); - } - else - { - System.out.println("Usage: BRE_KNO_MCC_PC2_UNICAST_PduSender <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC2_UNICAST_PduSender " + DEFAULT_MULTICAST_PORT + " " + DEFAULT_MULTICAST_ADDRESS); - BRE_KNO_MCC_PC2_UNICAST_PduSender sender = new BRE_KNO_MCC_PC2_UNICAST_PduSender(DEFAULT_MULTICAST_PORT, DEFAULT_MULTICAST_ADDRESS); - sender.run(5); - } - System.out.println("BRE_KNO_MCC_PC2_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; - } -} - 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 new file mode 100644 index 0000000000000000000000000000000000000000..a01d9a9738ad529419863b317f2018b1e43dcf3d --- /dev/null +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java @@ -0,0 +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 Mutex mutex = new Mutex(); + static List<Pdu> messagesToSend = new ArrayList(); + static boolean keepRunning = false; + static boolean isRunning = false; + + static InetAddress pc3IP; + static int portPC3; + + + public static void run() + { + 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); + } + + + try + { + DatagramSocket clientSocket = new DatagramSocket(portPC3); + while (keepRunning) + { + DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); + + try + { + 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(tempPdu.getTimestamp()); + + 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); + } + + + + + + + } +} diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduSender.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java similarity index 91% rename from assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduSender.java rename to assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java index 34d19cefd81e7bec5a9d62c68cb80c12f9a0051b..c444e2fd7cff84ec3a55453e9061f896ca1e20c9 100755 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduSender.java +++ b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.java @@ -17,7 +17,7 @@ import java.util.logging.Logger; * @author DMcG * @version $Id:$ */ -public class BRE_KNO_MCC_PC3_UNICAST_PduSender +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"; @@ -28,7 +28,7 @@ public class BRE_KNO_MCC_PC3_UNICAST_PduSender private int port; InetAddress multicastAddress; - public BRE_KNO_MCC_PC3_UNICAST_PduSender(int port, String multicast) { + public BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender(int port, String multicast) { try { this.port = port; @@ -69,7 +69,7 @@ public class BRE_KNO_MCC_PC3_UNICAST_PduSender try { aPdu.marshal(dos); } catch (Exception ex) { - Logger.getLogger(BRE_KNO_MCC_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); } buffer = baos.toByteArray(); @@ -95,14 +95,14 @@ public class BRE_KNO_MCC_PC3_UNICAST_PduSender { if (args.length == 2) { - BRE_KNO_MCC_PC3_UNICAST_PduSender sender = new BRE_KNO_MCC_PC3_UNICAST_PduSender(Integer.parseInt(args[0]), args[1]); + 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_UNICAST_PduSender sender = new 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."); diff --git a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduReceiver.java deleted file mode 100644 index 21cdae780eab9582a7e979cda1f0193d1bd8be8e..0000000000000000000000000000000000000000 --- a/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_UNICAST_PduReceiver.java +++ /dev/null @@ -1,80 +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_PC3_UNICAST_PduReceiver -{ - public static final int DEFAULT_MULTICAST_PORT = BRE_KNO_MCC_PC3_UNICAST_PduSender.DEFAULT_MULTICAST_PORT; - public static final String DEFAULT_MULTICAST_ADDRESS = BRE_KNO_MCC_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; - - try { - System.out.println("BRE_KNO_MCC_PC3_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_PC3_UNICAST_PduReceiver <port> <multicast group>"); - System.out.println("Default: BRE_KNO_MCC_PC3_UNICAST_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_PC3_UNICAST_PduReceiver, see exception trace:"); - System.out.println(e); - } - finally { - System.out.println("BRE_KNO_MCC_PC3_UNICAST_PduReceiver complete."); - } - } -}