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