Module java.base
Package java.net

Class 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 Detail

      • localPort

        protected int localPort
        The local port number.
    • Constructor Detail

      • DatagramSocketImpl

        public DatagramSocketImpl​()
    • Method Detail

      • create

        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

        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

        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

        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.

        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.
        Since:
        1.4
      • peek

        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

        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

        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

        @Deprecated
        protected abstract void setTTL​(byte ttl)
                                throws IOException
        Deprecated. 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()
      • getTTL

        @Deprecated
        protected abstract byte getTTL​()
                                throws IOException
        Deprecated. 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:
        setTTL(byte)
      • 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()
      • 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:
        setTimeToLive(int)
      • join

        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

        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

        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

        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

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

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

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

        protected <T> void setOption​(SocketOption<T> name,
                                     T value)
                              throws IOException
        Called to set a socket option.
        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
        NullPointerException - if name is null
        IOException - if an I/O problem occurs while attempting to set the option
        Since:
        9
      • getOption

        protected <T> T getOption​(SocketOption<T> name)
                           throws IOException
        Called to get a socket option.
        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
        NullPointerException - if name is null
        IOException - if an I/O problem occurs while attempting to set the option
        Since:
        9
      • supportedOptions

        protected Set<SocketOption<?>> supportedOptions​()
        Returns a set of SocketOptions supported by this impl and by this impl's socket (DatagramSocket or MulticastSocket)
        Returns:
        a Set of SocketOptions
        Since:
        9