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 197b06e6a295d6b83d71cbb73cef39ef82d18362..91d54920a4b49f10703c7530a12ed811a4c9df98 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 @@ -37,7 +37,6 @@ public class BRE_KNO_MCC_PC2_Controller pc2_pc3_sender = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender(); pc2_pc3_sender.setNetworkSettinigs(ipPC3, portPC3); pc2_pc3_sender.setKeepRunning(true); - pc2_pc3_receiver = new BRE_KNO_MCC_PC2_PC3_UNICAST_PduReceiver(); pc2_pc3_receiver.setNetworkSettings(2344); @@ -58,7 +57,7 @@ public class BRE_KNO_MCC_PC2_Controller if (!pc2_pc3_receiver.isAlive()) { pc2_pc3_receiver.start(); - } + } } 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 968ca2b89c106ae535dfccc705a820f9da1fcbf6..99b946c959e2a09e17b29db8f02249fdedabb084 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 @@ -148,13 +148,13 @@ public class BRE_KNO_MCC_PC2_PC1_MCAST_PduReceiver extends Thread { mutex.acquire(); temp = new ArrayList(mcastMessagesToSend); + mcastMessagesToSend.clear(); 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_PC3_PC2_UNICAST_PduReceiver.java b/assignments/src/MV3500Cohort2019JulySeptember/homework2/Brennenstuhl/BRE_KNO_MCC/BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.java index 27521f9bb814cb242326ae56f52d55b71253f7e0..768a954c36801182dc955b92b42d9a139c3485a8 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 @@ -33,7 +33,6 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver } run(); - } public static void run() @@ -43,9 +42,9 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver try { - DatagramSocket clientSocket = new DatagramSocket(portPC3); + DatagramSocket clientSocket = new DatagramSocket(portPC3); socket = new DatagramSocket(2344); - + while (keepRunning) { DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length); @@ -77,7 +76,8 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver System.out.println(message); - sendAnswer(tempPdu.getTimestamp()); + sendAnswerUNICASTtoPC2(tempPdu.getTimestamp()); + sendMCASTOver3000(tempPdu); } catch (IOException ex) @@ -102,7 +102,7 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver keepRunning = k; } - static void sendAnswer(int internID) + static void sendAnswerUNICASTtoPC2(int internID) { //Sending via UNICAST @@ -117,4 +117,51 @@ public class BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver Logger.getLogger(BRE_KNO_MCC_PC2_PC3_UNICAST_PduSender.class.getName()).log(Level.SEVERE, null, ex); } } + + static void sendMCASTOver3000(Pdu tempPdu) + { + InetAddress localMulticastAddress = null; + try + { + localMulticastAddress = InetAddress.getByName("239.1.2.3"); + } + catch (UnknownHostException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); + } + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + DataOutputStream dos = new DataOutputStream(baos); + byte[] buffer; + + try + { + tempPdu.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, 3000); + MulticastSocket socket; + try + { + socket = new MulticastSocket(3000); + socket.joinGroup(localMulticastAddress); + socket.send(packet); + } + catch (IOException ex) + { + Logger.getLogger(BRE_KNO_MCC_PC3_PC2_UNICAST_PduReceiver.class.getName()).log(Level.SEVERE, null, ex); + } + try + { + Thread.sleep(100L); + } + catch (InterruptedException ex) + { + } + } }