Something went wrong on our end
McneelyLeckieReceiver.java 6.50 KiB
package MV3500Cohort2021JulySeptember.projects.McneelyLeckieProject;
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 Justin Mcneely
* @author Jacob Leckie
*/
public class McneelyLeckieReceiver {
/** socket parameter of interest */
public static final int MULTICAST_PORT = 3000;
/** socket parameter of interest */
public static final String MULTICAST_GROUP = "239.1.2.15";
// public static final String MULTICAST_GROUP = "192.168.1.247";
/** socket parameter of interest */
static final boolean USE_FAST_ESPDU = false;
/**
* Program invocation, execution starts here
* @param args command-line arguments
*/
@SuppressWarnings("deprecation")
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 secondNumber = 67;
int thirdNumber = 108;
int forkliftsAvail = 12;
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;
@SuppressWarnings("unchecked")
ArrayList<VariableDatum> payload = (ArrayList)cPdu.getVariableDatums();
VariableDatum payloadWrapper = payload.get(0);
@SuppressWarnings("unchecked")
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++;
if(count > 1){
forkliftsAvail-=1;
forkliftsServ+=1;
}
System.out.println("Marine Aircraft Logistics Squadron 29: Wolverines!");
System.out.println("Order received: " + count + " NSN ID: 1874542689" + " 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);
}
}
}