Something went wrong on our end
-
Brutzman, Don authoredBrutzman, Don authored
PduReceiver.java 3.18 KiB
package OpenDis4Examples;
// originally edu.nps.moves.examples.ReceiverPerformance
import java.net.*;
import edu.nps.moves.dis.*;
import edu.nps.moves.disutil.PduFactory;
import java.io.IOException;
/** Listen for IEEE DIS Protocol Data Units (PDUs) */
public class PduReceiver
{
/** Default constructor */
public PduReceiver()
{
// default constructor
}
private static final int MULTICAST_PORT = 3000;
private static final String MULTICAST_GROUP = "239.1.2.3";
private static final boolean USE_FAST_ESPDU = false;
/**
* Program invocation, execution starts here
* @param args command-line arguments
*/
public static void main(String args[])
{
PduFactory factory;
MulticastSocket socket;
InetAddress address;
DatagramPacket packet;
try
{
System.out.println("OpenDis4Examples.PduReceiver started...");
socket = new MulticastSocket (MULTICAST_PORT);
address = InetAddress.getByName(MULTICAST_GROUP);
// socket.joinGroup(address); // deprecated
// =======================================================================
// new approach using interface
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(address);
SocketAddress localMulticastSocketAddress = new InetSocketAddress(address, MULTICAST_PORT);
socket.joinGroup(localMulticastSocketAddress, networkInterface);
// =======================================================================
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 currentPduType = pdu.getPduType();
String currentPduTypeName = pdu.getClass().getSimpleName();
short currentProtocolFamilyID = pdu.getProtocolFamily();
String currentPduFamilyName = pdu.getClass().getSuperclass().getSimpleName();
StringBuilder message = new StringBuilder();
message.append("received DIS PDU: ");
message.append("pduType ");
if (currentPduType < 10)
message.append(" ");
message.append(currentPduType).append(" ").append(currentPduTypeName);
message.append(", protocolFamily ").append(currentProtocolFamilyID);
message.append(" ").append(currentPduFamilyName);
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 OpenDis4Examples.PduReceiver, see exception trace:");
System.out.println(e);
}
finally
{
System.out.println("OpenDis4Examples.PduReceiver complete.");
}
}
}