Package Summary  Overview Summary

class:DatagramSocketImpl [NONE]

All Implemented Interfaces:
SocketOptions

public abstract class DatagramSocketImpl
extends Object
implements SocketOptions
Abstract datagram and multicast socket implementation base class.
Implementation Note:
Sockets created with the DatagramSocket and MulticastSocket public constructors historically delegated all socket operations to a DatagramSocketImpl implementation named "PlainDatagramSocketImpl". DatagramSocket and MulticastSocket have since been changed to a new implementation based on DatagramChannel. The JDK continues to ship with the older implementation to allow code to run that depends on unspecified behavior that differs between the old and new implementations. The old implementation will be used if the Java virtual machine is started with the system property jdk.net.usePlainDatagramSocketImpl set to use the old implementation. It may also be set in the JDK's network configuration file, located in ${java.home}/conf/net.properties . The value of the property is the string representation of a boolean. If set without a value then it defaults to true , hence running with -Djdk.net.usePlainDatagramSocketImpl or -Djdk.net.usePlainDatagramSocketImpl=true will configure the Java virtual machine to use the old implementation. The property and old implementation will be removed in a future version.
Since:
1.1

field:localPort [NONE]

  • localPort

    protected int localPort
    The local port number.
  • field:fd [NONE]

    fd

    protected FileDescriptor fd
    The file descriptor object.

    constructor:DatagramSocketImpl() [NONE]

    • DatagramSocketImpl

      public DatagramSocketImpl()
      Constructor for subclasses to call.

    method:create() [NONE]

  • 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.
  • method:bind(int,java.net.InetAddress) [NONE]

    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.

    method:send(java.net.DatagramPacket) [NONE]

    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.

    method:connect(java.net.InetAddress,int) [NONE]

    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

    method:disconnect() [NONE]

    disconnect

    protected void disconnect()
    Disconnects a datagram socket from its remote destination.
    Since:
    1.4

    method:peek(java.net.InetAddress) [NONE]

    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.

    method:peekData(java.net.DatagramPacket) [NONE]

    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

    method:receive(java.net.DatagramPacket) [NONE]

    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.

    method:setTTL(byte) [NONE]

    setTTL

    @Deprecatedprotected 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()

    method:getTTL() [NONE]

    getTTL

    @Deprecatedprotected 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)

    method:setTimeToLive(int) [NONE]

    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()

    method:getTimeToLive() [NONE]

    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)

    method:join(java.net.InetAddress) [NONE]

    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.

    method:leave(java.net.InetAddress) [NONE]

    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.

    method:joinGroup(java.net.SocketAddress,java.net.NetworkInterface) [NONE]

    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

    method:leaveGroup(java.net.SocketAddress,java.net.NetworkInterface) [NONE]

    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

    method:close() [NONE]

    close

    protected abstract  void close()
    Close the socket.

    method:getLocalPort() [NONE]

    getLocalPort

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

    method:getFileDescriptor() [NONE]

    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.
    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
  • method:getOption(java.net.SocketOption) [NONE]

    getOption

    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

    method:supportedOptions() [NONE]

    supportedOptions

    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