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. 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. 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

### method:disconnect() [NONE]
### 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

### 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 @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()`

### method:getTTL() [NONE]
### 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)`

### 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