/*----------------------------------------------------------------------- Class: MulticastPduSender Author: Mike McCarthy Last Update: 6 Jan. 1998 Program Invocation: This class is instantiated by other classes When this class is instantiated, it's methods are used to output PDUs on the specified Multicast group at a 1/10Hz rate. --------------------------------------------------------------------------*/ package mil.navy.nps.testing; import mil.navy.nps.dis.*; import mil.navy.nps.disEnumerations.*; import java.io.*; import java.lang.*; import java.net.*; import java.util.*; public class MulticastPduSender{ byte outputBuffer[] = new byte[1500];// buffer to hold datagram data InetAddress group; MulticastSocket s ; // socket to spit it out on DatagramPacket dgramPacket; // one datagram packet ByteArrayOutputStream outputStream; DataOutputStream dataOutputStream; byte streamArray[]; int pduSentCount = 0; public MulticastPduSender() { try { group = InetAddress.getByName("224.2.181.145"); s = new MulticastSocket(62040); /* try { System.out.println ("MulticastPduSender: ttl = " + s.getTimeToLive ()); s.setTimeToLive ( 15); // JDK 1.2 } catch (Exception e) { } */ System.out.println ("MulticastPduSender: ttl = " + s.getTTL ()); // Netscape JDK 1.1.5 s.setTTL ((byte)15); // Netscape JDK 1.1.5 } catch (Exception e) { System.err.println(e); } } public void SendMPDU (ProtocolDataUnit pdu) { outputStream = new ByteArrayOutputStream(); dataOutputStream = new DataOutputStream(outputStream); pdu.serialize(dataOutputStream); streamArray = outputStream.toByteArray(); // System.out.println("data serialized to " + streamArray[0] + " and " + streamArray[1]); dgramPacket = new DatagramPacket(outputStream.toByteArray(), outputStream.size(), group, 62040); try{ { s.send(dgramPacket, (byte)127); } pduSentCount++; if(pduSentCount % 10 == 0) { System.out.println("sent " + pduSentCount + " Pdus of type " + pdu.getPduType().intValue() + " = " + PduTypeField.toString (pdu.getPduType().intValue())); if ((short) pdu.getPduType().intValue() == PduTypeField.ENTITYSTATE) { System.out.println("espdu entity ID is [" + ((EntityStatePdu)pdu).getEntityID().toString() + "]"); System.out.println("espdu marking is [" + ((EntityStatePdu)pdu).getMarking() + "]"); } System.out.println(""); } }//end try catch (SocketException se) { System.err.println(se); } catch (UnknownHostException e) { System.err.println(e); } catch(IOException ioException) { System.out.println("sent a total of " + pduSentCount + "packets"); } } //end method }//endclass