Class DatagramSocketImpl

java.lang.Object
java.net.DatagramSocketImpl
All Implemented Interfaces:
SocketOptions

public abstract class DatagramSocketImpl extends Object implements SocketOptions
Abstract datagram and multicast socket implementation base class.
Since:
1.1
  • Field Details Link icon

    • localPort Link icon

      protected int localPort
      The local port number.
    • fd Link icon

      protected FileDescriptor fd
      The file descriptor object.
  • Constructor Details Link icon

    • DatagramSocketImpl Link icon

      public DatagramSocketImpl()
      Constructor for subclasses to call.
  • Method Details Link icon

    • create Link icon

      protected abstract void create() throws SocketException
      Creates a datagram socket.
      Throws:
      SocketException - if there is an error in the underlying protocol, such as a TCP error.
    • bind Link icon

      protected abstract void bind(int lport, InetAddress laddr) throws SocketException
      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 Link icon

      protected abstract void send(DatagramPacket p) throws IOException
      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 Link icon

      protected void connect(InetAddress address, int port) throws SocketException
      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 Link icon

      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 Link icon

      protected abstract int peek(InetAddress i) throws IOException
      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 Link icon

      protected abstract int peekData(DatagramPacket p) throws IOException
      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 Link icon

      protected abstract void receive(DatagramPacket p) throws IOException
      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 Link icon

      @Deprecated(forRemoval=true, since="1.2") protected abstract void setTTL(byte ttl) throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      use setTimeToLive instead.
      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 Link icon

      @Deprecated(forRemoval=true, since="1.2") protected abstract byte getTTL() throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      use getTimeToLive instead.
      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 Link icon

      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 Link icon

      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 Link icon

      protected abstract void join(InetAddress inetaddr) throws IOException
      Join the multicast group.
      Parameters:
      inetaddr - multicast address to join.
      Throws:
      IOException - if an I/O exception occurs while joining the multicast group.
    • leave Link icon

      protected abstract void leave(InetAddress inetaddr) throws IOException
      Leave the multicast group.
      Parameters:
      inetaddr - multicast address to leave.
      Throws:
      IOException - if an I/O exception occurs while leaving the multicast group.
    • joinGroup Link icon

      protected abstract void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
      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 Link icon

      protected abstract void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
      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 Link icon

      protected abstract void close()
      Close the socket.
    • getLocalPort Link icon

      protected int getLocalPort()
      Gets the local port.
      Returns:
      an int representing the local port value
    • getFileDescriptor Link icon

      protected FileDescriptor getFileDescriptor()
      Gets the datagram socket file descriptor.
      Returns:
      a FileDescriptor object representing the datagram socket file descriptor
    • setOption Link icon

      protected <T> void setOption(SocketOption<T> name, T value) throws IOException
      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 Link icon

      protected <T> T getOption(SocketOption<T> name) throws IOException
      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 Link icon

      protected Set<SocketOption<?>> 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