diff --git a/projects/Assignments/homework2/MaroonMulticastReceiver.java b/projects/Assignments/homework2/MaroonMulticastReceiver.java index b4d3e526956edd60457a197662145b2b6cd3fa6b..24b29783f158d0605d629d4a2970782a2d784a2c 100644 --- a/projects/Assignments/homework2/MaroonMulticastReceiver.java +++ b/projects/Assignments/homework2/MaroonMulticastReceiver.java @@ -3,6 +3,11 @@ import java.io.*; import java.net.*; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + /** * @@ -14,57 +19,78 @@ public class MaroonMulticastReceiver { public static final int DESTINATION_PORT = 1717; /** How many routers can be crossed */ public static final int TTL = 10; - + public static void main(String[] args) { - try - { + JFrame guiFrame = new JFrame(); + guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + guiFrame.setTitle("Read a message"); + guiFrame.setSize(300,250); + guiFrame.setLocationRelativeTo(null); + + final JPanel output = new JPanel(); + output.setVisible(true); + JLabel outputLbl= new JLabel("Hit the Button"); + output.add(outputLbl); + + JButton MCButton = new JButton( "Push Me"); + + MCButton.addActionListener(new ActionListener(){ + @Override + public void actionPerformed(ActionEvent event){ + try { - // This is a java/IPv6 problem. You should also add it to the - // arguments used to start the app, eg -Djava.net.preferIPv4Stack=true - // set in the "run" section of preferences. Also, typically - // netbeans must be restarted after these settings. - // https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache - System.setProperty("java.net.preferIPv4Stack", "true"); + // This is a java/IPv6 problem. You should also add it to the + // arguments used to start the app, eg -Djava.net.preferIPv4Stack=true + // set in the "run" section of preferences. Also, typically + // netbeans must be restarted after these settings. + // https://stackoverflow.com/questions/18747134/getting-cant-assign-requested-address-java-net-socketexception-using-ehcache + System.setProperty("java.net.preferIPv4Stack", "true"); - MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT); - multicastSocket.setTimeToLive(TTL); - InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS); - System.out.println(multicastAddress); - // Join group useful on receiving side - multicastSocket.joinGroup(multicastAddress); - // You can join multiple groups here + MulticastSocket multicastSocket = new MulticastSocket(DESTINATION_PORT); + multicastSocket.setTimeToLive(TTL); + InetAddress multicastAddress = InetAddress.getByName(MULTICAST_ADDRESS); + System.out.println(multicastAddress); + // Join group useful on receiving side + multicastSocket.joinGroup(multicastAddress); + // You can join multiple groups here - int count = 0; + int count = 0; - while(true) - { - byte[] packetArray = new byte[1500]; - DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length); + byte[] packetArray = new byte[1500]; + DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length); - multicastSocket.receive(packet); - count++; + multicastSocket.receive(packet); + count++; - ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData()); - DataInputStream dis = new DataInputStream(bais); - int firstNumber = dis.readInt(); - int messageLength = dis.readInt(); - String message = ""; - for (int i = 0; i < messageLength; i++){ - message += dis.readChar(); - } + ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData()); + DataInputStream dis = new DataInputStream(bais); + int firstNumber = dis.readInt(); + int messageLength = dis.readInt(); + String message = ""; + for (int i = 0; i < messageLength; i++){ + message += dis.readChar(); + } + outputLbl.setText(message); - - System.out.println("Number received: " + count + " First number:" + firstNumber + " message:" + message); + System.out.println("Number received: " + count + " First number:" + firstNumber + " message:" + message); + } + catch(Exception e){ + System.out.println(e); + } } } - catch(Exception e) - { - System.out.println(e); - } + ); + + + guiFrame.add(output, BorderLayout.CENTER); + guiFrame.add(MCButton,BorderLayout.NORTH); + guiFrame.setVisible(true); + + } } diff --git a/projects/Assignments/homework2/MaroonMulticastSenderExample.java b/projects/Assignments/homework2/MaroonMulticastSenderExample.java index d37d37d831b1abb8d6ecc21e91579bcc9b224e58..f4a1c1ba9cf9cb43d3f0df3a392a92761520b92e 100644 --- a/projects/Assignments/homework2/MaroonMulticastSenderExample.java +++ b/projects/Assignments/homework2/MaroonMulticastSenderExample.java @@ -43,7 +43,7 @@ public class MaroonMulticastSenderExample { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeInt(1); - String message = "Hammertime"; + String message = "**********************************"; dos.writeInt(message.length()); dos.writeChars(message); byte[] buffer = baos.toByteArray(); @@ -52,7 +52,7 @@ public class MaroonMulticastSenderExample { baos.reset(); dos.writeInt(2); - message = "Collaberate and Listen"; + message = "<===========================>"; dos.writeInt(message.length()); dos.writeChars(message);