All Implemented Interfaces:
SocketOptions

public abstract class DatagramSocketImpl extends Object implements SocketOptions

Abstract datagram and multicast socket implementation base class.

Since:
1.1
  • Field Summary

    Fields

    The file descriptor object.

    protected int

  • Constructor Summary

    Constructors

    Constructor for subclasses to call.

  • Method Summary

    protected abstract void

    Binds a datagram socket to a local port and address.

    protected abstract void

    close()

    protected void

    Connects a datagram socket to a remote destination.

    protected abstract void

    create()

    Creates a datagram socket.

    protected void

    Disconnects a datagram socket from its remote destination.

    Gets the datagram socket file descriptor.

    protected int

    protected <T> T

    Called to get a socket option.

    protected abstract int

    Retrieve the TTL (time-to-live) option.

    protected abstract byte

    getTTL()

    protected abstract void

    Join the multicast group.

    protected abstract void

    Join the multicast group.

    protected abstract void

    Leave the multicast group.

    protected abstract void

    Leave the multicast group.

    protected abstract int

    Peek at the packet to see who it is from.

    protected abstract int

    Peek at the packet to see who it is from.

    protected abstract void

    Receive the datagram packet.

    protected abstract void

    protected <T> void

    Called to set a socket option.

    protected abstract void

    setTimeToLive(int ttl)

    Set the TTL (time-to-live) option.

    protected abstract void

    setTTL(byte ttl)

    Returns a set of SocketOptions supported by this impl and by this impl's socket (DatagramSocket or MulticastSocket)

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

  • Field Details

    • localPort

      protected int localPort

      The local port number.

    • fd

      The file descriptor object.

  • Constructor Details

    • DatagramSocketImpl

      public DatagramSocketImpl()

      Constructor for subclasses to call.

  • Method Details

    • create

      Creates a datagram socket.

      Throws:
      SocketException - if there is an error in the underlying protocol, such as a TCP error.
    • bind

      Binds a datagram socket to a local port and address.

      Parameters:
      lport - the local port
      laddr - the local address
      Throws:
      SocketException - if there is an error in the underlying protocol, such as a TCP error.
    • send

      Sends a datagram packet. The packet contains the data and the destination address to send the packet to.

      Parameters:
      p - the packet to be sent.
      Throws:
      IOException - if an I/O exception occurs while sending the datagram packet.
      PortUnreachableException - may be thrown if the socket is connected to a currently unreachable destination. Note, there is no guarantee that the exception will be thrown.
    • connect

      Connects a datagram socket to a remote destination. This associates the remote address with the local socket so that datagrams may only be sent to this destination and received from this destination. This may be overridden to call a native system connect.

      If the remote destination to which the socket is connected does not exist, or is otherwise unreachable, and if an ICMP destination unreachable packet has been received for that address, then a subsequent call to send or receive may throw a PortUnreachableException. Note, there is no guarantee that the exception will be thrown.

      Implementation Requirements:
      The default implementation of this method throws SocketException.
      Parameters:
      address - the remote InetAddress to connect to
      port - the remote port number
      Throws:
      SocketException - may be thrown if the socket cannot be connected to the remote destination
      Since:
      1.4
    • disconnect

      protected void disconnect()

      Disconnects a datagram socket from its remote destination.

      Implementation Requirements:
      The default implementation of this method throws UncheckedIOException.
      Throws:
      UncheckedIOException - if disconnect fails or no implementation is provided
      Since:
      1.4
    • peek

      Peek at the packet to see who it is from. Updates the specified InetAddress to the address which the packet came from.

      Parameters:
      i - an InetAddress object
      Returns:
      the port number which the packet came from.
      Throws:
      IOException - if an I/O exception occurs
      PortUnreachableException - may be thrown if the socket is connected to a currently unreachable destination. Note, there is no guarantee that the exception will be thrown.
    • peekData

      Peek at the packet to see who it is from. The data is copied into the specified DatagramPacket. The data is returned, but not consumed, so that a subsequent peekData/receive operation will see the same data.

      Parameters:
      p - the Packet Received.
      Returns:
      the port number which the packet came from.
      Throws:
      IOException - if an I/O exception occurs
      PortUnreachableException - may be thrown if the socket is connected to a currently unreachable destination. Note, there is no guarantee that the exception will be thrown.
      Since:
      1.4
    • receive

      Receive the datagram packet.

      Parameters:
      p - the Packet Received.
      Throws:
      IOException - if an I/O exception occurs while receiving the datagram packet.
      PortUnreachableException - may be thrown if the socket is connected to a currently unreachable destination. Note, there is no guarantee that the exception will be thrown.
    • setTTL

      Set the TTL (time-to-live) option.

      Parameters:
      ttl - a byte specifying the TTL value
      Throws:
      IOException - if an I/O exception occurs while setting the time-to-live option.
      See Also:
    • getTTL

      Retrieve the TTL (time-to-live) option.

      Returns:
      a byte representing the TTL value
      Throws:
      IOException - if an I/O exception occurs while retrieving the time-to-live option
      See Also:
    • setTimeToLive

      protected abstract void setTimeToLive(int ttl) throws IOException

      Set the TTL (time-to-live) option.

      Parameters:
      ttl - an int specifying the time-to-live value
      Throws:
      IOException - if an I/O exception occurs while setting the time-to-live option.
      See Also:
    • getTimeToLive

      protected abstract int getTimeToLive() throws IOException

      Retrieve the TTL (time-to-live) option.

      Returns:
      an int representing the time-to-live value
      Throws:
      IOException - if an I/O exception occurs while retrieving the time-to-live option
      See Also:
    • join

      Join the multicast group.

      Parameters:
      inetaddr - multicast address to join.
      Throws:
      IOException - if an I/O exception occurs while joining the multicast group.
    • leave

      Leave the multicast group.

      Parameters:
      inetaddr - multicast address to leave.
      Throws:
      IOException - if an I/O exception occurs while leaving the multicast group.
    • joinGroup

      Join the multicast group.

      Parameters:
      mcastaddr - address to join.
      netIf - specifies the local interface to receive multicast datagram packets
      Throws:
      IOException - if an I/O exception occurs while joining the multicast group
      Since:
      1.4
    • leaveGroup

      Leave the multicast group.

      Parameters:
      mcastaddr - address to leave.
      netIf - specified the local interface to leave the group at
      Throws:
      IOException - if an I/O exception occurs while leaving the multicast group
      Since:
      1.4
    • close

      protected abstract void close()

      Close the socket.

    • getLocalPort

      protected int getLocalPort()

      Gets the local port.

      Returns:
      an int representing the local port value
    • getFileDescriptor

      Gets the datagram socket file descriptor.

      Returns:
      a FileDescriptor object representing the datagram socket file descriptor
    • setOption

      Called to set a socket option.

      Implementation Requirements:
      The default implementation of this method first checks that the given socket option name is not null, then throws UnsupportedOperationException. Subclasses should override this method with an appropriate implementation.
      Type Parameters:
      T - The type of the socket option value
      Parameters:
      name - The socket option
      value - The value of the socket option. A value of null may be valid for some options.
      Throws:
      UnsupportedOperationException - if the DatagramSocketImpl does not support the option
      IllegalArgumentException - if the value is not valid for the option
      IOException - if an I/O error occurs, or if the socket is closed
      NullPointerException - if name is null
      Since:
      9
    • getOption

      Called to get a socket option.

      Implementation Requirements:
      The default implementation of this method first checks that the given socket option name is not null, then throws UnsupportedOperationException. Subclasses should override this method with an appropriate implementation.
      Type Parameters:
      T - The type of the socket option value
      Parameters:
      name - The socket option
      Returns:
      the socket option
      Throws:
      UnsupportedOperationException - if the DatagramSocketImpl does not support the option
      IOException - if an I/O error occurs, or if the socket is closed
      NullPointerException - if name is null
      Since:
      9
    • supportedOptions

      Returns a set of SocketOptions supported by this impl and by this impl's socket (DatagramSocket or MulticastSocket)

      Implementation Requirements:
      The default implementation of this method returns an empty set. Subclasses should override this method with an appropriate implementation.
      Returns:
      a Set of SocketOptions
      Since:
      9