diff --git a/deliverables/src/MV3500Cohort2018JulySeptember/FinalProject/AyresDemchkoProject/AyresDemchkoReceiver.java b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProject/AyresDemchkoProject/AyresDemchkoReceiver.java new file mode 100644 index 0000000000000000000000000000000000000000..c26c0c9250bf2cafa1d467a587ee62a4b6f10329 --- /dev/null +++ b/deliverables/src/MV3500Cohort2018JulySeptember/FinalProject/AyresDemchkoProject/AyresDemchkoReceiver.java @@ -0,0 +1,144 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package MV3500Cohort2018JulySeptember.FinalProject.AyresDemchko; + +import edu.nps.moves.dis.CommentPdu; +import edu.nps.moves.dis.OneByteChunk; +import edu.nps.moves.dis.Pdu; +import edu.nps.moves.dis.VariableDatum; +import edu.nps.moves.disenum.PduType; +import edu.nps.moves.disutil.PduFactory; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; +import java.net.DatagramPacket; +import java.net.InetAddress; +import java.net.MulticastSocket; +import java.util.ArrayList; + +/** + * + * @author kjayr + */ +public class AyresDemchkoReceiver { + + public static final int MULTICAST_PORT = 3000; + public static final String MULTICAST_GROUP = "239.1.2.15"; + public static final boolean USE_FAST_ESPDU = false; + + public static void main(String[] args) + { + + PduFactory factory; + 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"); + //System.out.println("DisExamples.PduReceiver started..."); + + /*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*/ + System.setProperty("java.net.preferIPv4Stack", "true"); + System.out.println("DisExamples.PduReceiver started..."); + MulticastSocket socket = new MulticastSocket (MULTICAST_PORT); + InetAddress address = InetAddress.getByName(MULTICAST_GROUP); + socket.joinGroup(address); + + factory = new PduFactory(); + + int count = 0; + int firstNumber = 11; + int secondNumber = 67; + int thirdNumber = 108; + int forkliftsAvail = 100; + int forkliftsServ = 0; + + while(true) + { + + byte[] packetArray = new byte[1500]; + DatagramPacket packet = new DatagramPacket(packetArray, packetArray.length); + + socket.receive(packet); + + Pdu pdu = factory.createPdu (packet.getData()); + if (pdu != null) + { + short pduType = pdu.getPduType(); + String pduTypeName = pdu.getClass().getName(); + short protocolFamily = pdu.getProtocolFamily(); // TODO get string enumeration + + if(pdu.getPduTypeEnum() == PduType.COMMENT){ + CommentPdu cPdu = (CommentPdu)pdu; + ArrayList<VariableDatum> payload = (ArrayList)cPdu.getVariableDatums(); + VariableDatum payloadWrapper = payload.get(0); + ArrayList<OneByteChunk> oBC = (ArrayList)payloadWrapper.getVariableData(); + + //byte[] imageByte = new byte[100000]; + + /*for(int i = 0; i < oBC.size(); i++){ + imageByte[i] = oBC.get(i).getOtherParameters()[0]; + } + + ByteArrayInputStream bais = new ByteArrayInputStream(imageByte); + BufferedImage bimage = ImageIO.read(bais); + //image = bimage; + JFrame frame = new JFrame(); + frame.setSize(300, 300); + //JLabel label = new JLabel(new ImageIcon(image)); + //frame.add(label); + frame.setVisible(true); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);*/ + } + count++; + firstNumber+=1.5; + secondNumber+=3.5; + thirdNumber+=5.0; + if(count > 1){ + forkliftsAvail-=1; + forkliftsServ+=1; + } + System.out.println("Marine Corps Logistics Base Albany: Wilson Warehouse"); + System.out.println("Order received: " + count + " NSN ID: " + firstNumber + " Xrow: " + secondNumber + " Yshelf: "+ thirdNumber + + " Forklifts Availble: " + forkliftsAvail + " Forklifts in Service: " +forkliftsServ); + System.out.println("______________________________________________________"); + StringBuilder message = new StringBuilder(); + message.append("received DIS PDU: "); + message.append("pduType "); + if (pduType < 10) + message.append(" "); + message.append(pduType).append(" ").append(pduTypeName); + message.append(", protocolFamily=").append(protocolFamily); + System.out.println(message.toString()); + } + else System.out.println("received packet but pdu is null, packet.getData().length=" + packet.getData().length + ", error..."); + + ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData()); + DataInputStream dis = new DataInputStream(bais); + //float firstNumber = dis.readInt(); + //float secondNumber = dis.readInt(); + //float thirdNumber = dis.readInt(); + + + } + } + catch(Exception e) + { + System.out.println(e); + } + } +} + +