diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java index 6297af9972e0eb9304996b968447600d236b75ad..bff3d5235fbe499aedb3a6beecc897f17a9234e3 100644 --- a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java +++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageReceiver.java @@ -59,6 +59,7 @@ public class LoeffelmanSeversonDISImageReceiver { while (true) // Loop infinitely, receiving datagrams { + //buffer needs to be resized to be able to accept image sizes byte buffer[] = new byte[100000]; // typical MTU size packet = new DatagramPacket(buffer, buffer.length); // reset @@ -72,7 +73,11 @@ public class LoeffelmanSeversonDISImageReceiver { String pduTypeName = pdu.getClass().getName(); short protocolFamily = pdu.getProtocolFamily(); // TODO get string enumeration + //If we receive a comment PDU, we are going to look for a picture specifically if(pdu.getPduTypeEnum() == PduType.COMMENT){ + //Set up data structures, get the list of variableDatums, and + //get the first and only VariableDatum, and the arrayList + //of OneByteChunks from the variableDatum CommentPdu cPdu = (CommentPdu)pdu; ArrayList<VariableDatum> payload = (ArrayList)cPdu.getVariableDatums(); VariableDatum payloadWrapper = payload.get(0); @@ -80,13 +85,19 @@ public class LoeffelmanSeversonDISImageReceiver { byte[] imageByte = new byte[100000]; + //Loop through the arrayList of OneByteChunks and + //populate the byte array representation of the image for(int i = 0; i < oBC.size(); i++){ imageByte[i] = oBC.get(i).getOtherParameters()[0]; } + //Convert that byte array into an input stream and into + //an image using a buffered image reader. ByteArrayInputStream bais = new ByteArrayInputStream(imageByte); BufferedImage bimage = ImageIO.read(bais); image = bimage; + + //Display the image using java swing utilities JFrame frame = new JFrame(); frame.setSize(300, 300); JLabel label = new JLabel(new ImageIcon(image)); diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java index c5e6d71c05828111eedbd6e77c81291daa856d3e..68fa698cccb5c6549404eb992fed99fd02e5c254 100644 --- a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java +++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProjects/LoeffelmanSeverson/LoeffelmanSeversonDISImageSender.java @@ -108,17 +108,24 @@ public class LoeffelmanSeversonDISImageSender { break; case COMMENT: + //Initialize PDU and image aPdu = new CommentPdu(); CommentPdu cPdu = (CommentPdu)aPdu; BufferedImage image = ImageIO.read(url1); + //Convert image to a byte array ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write(image, "png", baos); byte[] buffer; buffer = baos.toByteArray(); + + //Instaniate data structures for holding bytes ArrayList<VariableDatum> payload = new ArrayList<VariableDatum>(); ArrayList<OneByteChunk> payloadWrapper = new ArrayList<OneByteChunk>(); VariableDatum variableDatum = new VariableDatum(); + + //Loop through, create OneByteChunk arrays of size 1 + //and place them in ArrayList of OneByteChunks for(int i = 0; i < buffer.length; i++){ OneByteChunk oBC = new OneByteChunk(); byte[] oneBite = new byte[1]; @@ -127,10 +134,13 @@ public class LoeffelmanSeversonDISImageSender { payloadWrapper.add(oBC); } System.out.println("Sending Picture"); - + + //Add the arrayList of OneByteChunks to the variable datum variableDatum.setVariableData(payloadWrapper); + //Add the variableDatum to the arraylist payload.add(variableDatum); + //Set the variableDatum for the PDU to be sent cPdu.setVariableDatums(payload); break;