From 2f9881c01e6a2237ae1c9b735bfb80658d149975 Mon Sep 17 00:00:00 2001 From: brutzman <brutzman@nps.edu> Date: Tue, 4 Sep 2018 10:51:20 -0700 Subject: [PATCH] PduReader example --- .../src/DisExamples/PduReceiver.java | 70 +++++++++++++++++++ .../DisExamples/PduReceiverTerminalLog.txt | 19 +++++ 2 files changed, 89 insertions(+) create mode 100644 CourseExamples/src/DisExamples/PduReceiver.java create mode 100644 CourseExamples/src/DisExamples/PduReceiverTerminalLog.txt diff --git a/CourseExamples/src/DisExamples/PduReceiver.java b/CourseExamples/src/DisExamples/PduReceiver.java new file mode 100644 index 0000000000..4ff5cd98c0 --- /dev/null +++ b/CourseExamples/src/DisExamples/PduReceiver.java @@ -0,0 +1,70 @@ +package DisExamples; + +// originally edu.nps.moves.examples.ReceiverPerformance + +import java.net.*; + +import edu.nps.moves.dis.*; +import edu.nps.moves.disutil.PduFactory; +import java.io.IOException; + +public class PduReceiver +{ + public static final int MULTICAST_PORT = 3000; + public static final String MULTICAST_GROUP = "239.1.2.3"; + public static final boolean USE_FAST_ESPDU = false; + + public static void main(String args[]) + { + PduFactory factory; + MulticastSocket socket = null; + InetAddress address = null; + DatagramPacket packet; + + try + { + System.out.println("DisExamples.PduReceiver started..."); + socket = new MulticastSocket (MULTICAST_PORT); + address = InetAddress.getByName(MULTICAST_GROUP); + socket.joinGroup(address); + + factory = new PduFactory(); + + while (true) // Loop infinitely, receiving datagrams + { + byte buffer[] = new byte[1500]; // typical MTU size + + packet = new DatagramPacket(buffer, buffer.length); // reset + + 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 + + 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..."); + } + } + catch (IOException e) + { + System.out.println("Problem with DisExamples.PduReceiver, see exception trace:"); + System.out.println(e); + } + finally + { + System.out.println("DisExamples.PduReceiver complete."); + } + } +} diff --git a/CourseExamples/src/DisExamples/PduReceiverTerminalLog.txt b/CourseExamples/src/DisExamples/PduReceiverTerminalLog.txt new file mode 100644 index 0000000000..084b6ab770 --- /dev/null +++ b/CourseExamples/src/DisExamples/PduReceiverTerminalLog.txt @@ -0,0 +1,19 @@ +run: +DisExamples.PduReceiver started... +received DIS PDU: pduType 15 edu.nps.moves.dis.AcknowledgePdu, protocolFamily=5 +received DIS PDU: pduType 16 edu.nps.moves.dis.ActionRequestPdu, protocolFamily=5 +received DIS PDU: pduType 4 edu.nps.moves.dis.CollisionPdu, protocolFamily=1 +received DIS PDU: pduType 22 edu.nps.moves.dis.CommentPdu, protocolFamily=5 +received DIS PDU: pduType 11 edu.nps.moves.dis.CreateEntityPdu, protocolFamily=5 +received DIS PDU: pduType 3 edu.nps.moves.dis.DetonationPdu, protocolFamily=2 +received DIS PDU: pduType 1 edu.nps.moves.dis.EntityStatePdu, protocolFamily=1 +received DIS PDU: pduType 2 edu.nps.moves.dis.FirePdu, protocolFamily=2 +received DIS PDU: pduType 12 edu.nps.moves.dis.RemoveEntityPdu, protocolFamily=5 +received DIS PDU: pduType 9 edu.nps.moves.dis.RepairCompletePdu, protocolFamily=3 +received DIS PDU: pduType 10 edu.nps.moves.dis.RepairResponsePdu, protocolFamily=3 +received DIS PDU: pduType 8 edu.nps.moves.dis.ResupplyCancelPdu, protocolFamily=3 +received DIS PDU: pduType 6 edu.nps.moves.dis.ResupplyOfferPdu, protocolFamily=3 +received packet but pdu is null, packet.getData().length=1500, error... +received DIS PDU: pduType 5 edu.nps.moves.dis.ServiceRequestPdu, protocolFamily=3 +received DIS PDU: pduType 13 edu.nps.moves.dis.StartResumePdu, protocolFamily=5 +received DIS PDU: pduType 14 edu.nps.moves.dis.StopFreezePdu, protocolFamily=5 -- GitLab