Class AbstractPacket

java.lang.Object
org.pcap4j.packet.AbstractPacket
All Implemented Interfaces:
Serializable, Iterable<Packet>, Packet
Direct Known Subclasses:
AbstractPppPacket, ArpPacket, BsdLoopbackPacket, DnsPacket, Dot11ManagementPacket, Dot11Selector, Dot1qVlanTagPacket, EthernetPacket, GtpSelector, GtpV1Packet, IcmpIdentifiablePacket, IcmpV4CommonPacket, IcmpV4InvokingPacketPacket, IcmpV6CommonPacket, IcmpV6HomeAgentAddressDiscoveryReplyPacket, IcmpV6HomeAgentAddressDiscoveryRequestPacket, IcmpV6InvokingPacketPacket, IcmpV6MobilePrefixAdvertisementPacket, IcmpV6MobilePrefixSolicitationPacket, IcmpV6NeighborAdvertisementPacket, IcmpV6NeighborSolicitationPacket, IcmpV6RedirectPacket, IcmpV6RouterAdvertisementPacket, IcmpV6RouterSolicitationPacket, IllegalPacket, IpSelector, IpV4Packet, IpV6ExtFragmentPacket, IpV6ExtOptionsPacket, IpV6ExtRoutingPacket, IpV6ExtUnknownPacket, IpV6Packet, LinuxSllPacket, LlcPacket, PppSelector, RadiotapPacket, SctpPacket, SimplePacket, SnapPacket, Ssh2BinaryPacket, Ssh2DebugPacket, Ssh2DisconnectPacket, Ssh2IgnorePacket, Ssh2KexDhInitPacket, Ssh2KexDhReplyPacket, Ssh2KexInitPacket, Ssh2NewKeysPacket, Ssh2ServiceAcceptPacket, Ssh2ServiceRequestPacket, Ssh2UnimplementedPacket, Ssh2VersionExchangePacket, SshPacket, TcpPacket, UdpPacket

public abstract class AbstractPacket extends Object implements Packet
Abstract immutable packet class. If you use
invalid reference
PropertiesBasedPacketFactory
, this subclass must implement the following method: public static Packet newPacket(byte[] rawData, int offset, int length) throws IllegalRawDataException
Since:
pcap4j 0.9.1
See Also:
  • Field Details

  • Constructor Details

    • AbstractPacket

      public AbstractPacket()
  • Method Details

    • getHeader

      public Packet.Header getHeader()
      Returns the Header object representing this packet's header. This subclass have to override this method if the packet represented by the subclass has a header.
      Specified by:
      getHeader in interface Packet
      Returns:
      the Header object representing this packet's header. May be null if the header doesn't exist
    • getPayload

      public Packet getPayload()
      Returns the Packet object representing this packet's payload. This subclass have to override this method if the packet represented by the subclass has a payload.
      Specified by:
      getPayload in interface Packet
      Returns:
      the Packet object representing this packet's payload. May be null if the payload doesn't exist
    • calcLength

      protected int calcLength()
      This method calculates the value length() will return by adding up the header length and the payload length. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
      Returns:
      a calculated length
    • length

      public int length()
      Returns the packet length in bytes. This method calls calcLength() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
      Specified by:
      length in interface Packet
      Returns:
      the length of the byte stream of the packet represented by this object in bytes
    • buildRawData

      protected byte[] buildRawData()
      This method builds the value getRawData() will return by concatenating the header's raw data and the payload's raw data. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
      Returns:
      a raw data built
    • getRawData

      public byte[] getRawData()
      Returns this packet's raw data. This method calls buildRawData() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time. More correctly, this method returns a copy of the cached value, so that the cache can't be changed.
      Specified by:
      getRawData in interface Packet
      Returns:
      this packet's raw data, namely the byte stream which is actually sent through real network
    • iterator

      public Iterator<Packet> iterator()
      Specified by:
      iterator in interface Iterable<Packet>
    • get

      public <T extends Packet> T get(Class<T> clazz)
      Description copied from interface: Packet
      Traverses this packet and its payload to find an object of the specified packet class and returns the object. If there are more than one objects of the specified class in this object, this method returns the most outer one of them.
      Specified by:
      get in interface Packet
      Type Parameters:
      T - packet
      Parameters:
      clazz - the packet class of the object to get
      Returns:
      a packet object if found; otherwise null
    • getOuterOf

      public Packet getOuterOf(Class<? extends Packet> clazz)
      Description copied from interface: Packet
      Returns the outer packet object of a packet object get(clazz) returns.
      Specified by:
      getOuterOf in interface Packet
      Parameters:
      clazz - the packet class of the object whose outer packet object is what you want to get
      Returns:
      a packet object if found; otherwise null
    • contains

      public <T extends Packet> boolean contains(Class<T> clazz)
      Description copied from interface: Packet
      Returns true if this packet is or its payload includes an object of specified packet class; false otherwise.
      Specified by:
      contains in interface Packet
      Type Parameters:
      T - packet
      Parameters:
      clazz - the packet class of the object to search for
      Returns:
      true if this packet is or its payload includes an object of specified packet class; false otherwise
    • getBuilder

      public abstract Packet.Builder getBuilder()
      Description copied from interface: Packet
      Returns a new Builder object populated with this object's fields' values.
      Specified by:
      getBuilder in interface Packet
      Returns:
      a new Builder object populated with this object's fields values
    • buildHexString

      protected String buildHexString()
      This method builds the value toHexString() will return using the return value of getRawData(). Each octet in this return value is separated by a white space. (e.g. 00 01 02 03 aa bb cc)
      Returns:
      a hex string representation of this object
    • toHexString

      public String toHexString()
      Returns the hex string representation of this object. This method calls buildHexString() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
      Returns:
      a hex string representation of this object
    • buildString

      protected String buildString()
      This method builds the value toString() will return by concatenating the header's string representation and the payload's string representation. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
      Returns:
      a string representation of this object
    • toString

      public String toString()
      Returns a string representation of the object. This method calls buildString() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Indicates whether some other object is "equal to" this one. This method firstly compares this packet's header using the header's equals(Object) method, then compares this packet's payload using the payload's equals(Object) method. If you write this subclass with fields which represent somethings other than header or payload, you need to override this method.
      Overrides:
      equals in class Object
    • calcHashCode

      protected int calcHashCode()
      This method calculates the value hashCode() will return using the header's hash code and the payload's hash code. If you write this subclass which represents a packet with extra parts (e.g. a trailer), you need to override this method.
      Returns:
      a calculated hash code value for the object
    • hashCode

      public int hashCode()
      Returns a hash code value for the object. This method calls calcHashCode() and caches the return value when it is called for the first time, and then, this method returns the cached value from the second time.
      Overrides:
      hashCode in class Object