Example: Using the commtrace classes

Note: Read the Code example disclaimer for important legal information.
//////////////////////////////////////////////////////////////////////
//
// Example using the commtrace classes to print communications trace
// data to a monitor by using a communications trace binary file as
// the source for the data.
//
// Command syntax:
//    java CommTraceExample
//
//////////////////////////////////////////////////////////////////////

import com.ibm.as400.util.commtrace.*;


public class CommTraceExample {


  public CommTraceExample() {
    // Create a FormatProperties. By default display everything.
    FormatProperties fmtprop = new FormatProperties();

    Format fmt = new Format("/path/to/file");
    // Sets the filtering properties for this format
    fmt.setFilterProperties(fmtprop);
    fmt.formatProlog(); // Format the prolog

    Prolog pro = fmt.getProlog();
    System.out.println(pro.toString());

    // If this is not a valid trace
    if (!pro.invalidData()) {
      Frame rec;

      // Get the records
      while ((rec = fmt.getNextRecord()) != null) {

        // Print out the Frame Number
        System.out.print("Record:" + rec.getRecNum());
        // Print out the time
        System.out.println(" Time:" + rec.getTime());
        // Get this records packet
        IPPacket p = rec.getPacket();
        // Get the first header
        Header h = p.getHeader();

        // If IP6 IPPacket
        if (p.getType() == IPPacket.IP6) {

          // If IP6 Header
          if (h.getType() == Header.IP6) {

            // Cast to IP6 so we can access methods
            IP6Header ip6 = (IP6Header) h;

            System.out.println(h.getName() + " src:" + ip6.getSrcAddr() + " dst:" + ip6.getDstAddr());
            // Print the header as hex
            System.out.println(ip6.printHexHeader());
            // Print a string representation of the header.
            System.out.println("Complete " + h.getName() + ":\n" + ip6.toString(fmtprop));

            // Get the rest of the headers 
            while ((h = h.getNextHeader()) != null) {

              // If it is a TCP header
              if (h.getType() == Header.TCP) {
                // Cast so we can access methods
                TCPHeader tcp = (TCPHeader) h;
                System.out.println(h.getName() +" src:" + tcp.getSrcPort() +" dst:" + tcp.getDstPort());
                System.out.println("Complete " + h.getName() + ":\n" + tcp.toString(fmtprop));

                // If it is a UDP header
              } else if (h.getType() == Header.UDP) {
                // Cast so we can access methods
                UDPHeader udp = (UDPHeader) h;
                System.out.println(h.getName() +" src:" + udp.getSrcPort() + " dst:" + udp.getDstPort());
                System.out.println("Complete " + h.getName() + ":\n" + udp.toString(fmtprop));
              }
            }
          }
        }
      }
    }
  }

    public static void main(String[] args) {
        CommTraceExample e = new CommTraceExample();
    }
}