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 Summary

Fields
Modifier and Type Field Description
protected FileDescriptor fd

The file descriptor object.

protected int localPort

The local port number.

Fields declared in interface java.net.SocketOptions

IP_MULTICAST_IF, IP_MULTICAST_IF2, IP_MULTICAST_LOOP, IP_TOS, SO_BINDADDR, SO_BROADCAST, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_RCVBUF, SO_REUSEADDR, SO_REUSEPORT, SO_SNDBUF, SO_TIMEOUT, TCP_NODELAY

Constructor Summary

Constructors
Constructor Description
DatagramSocketImpl()

Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
Modifier and Type Method Description
protected abstract void bind​(int lport, InetAddress laddr)

Binds a datagram socket to a local port and address.

protected abstract void close()

Close the socket.

protected void connect​(InetAddress address, int port)

Connects a datagram socket to a remote destination.

protected abstract void create()

Creates a datagram socket.

protected void disconnect()

Disconnects a datagram socket from its remote destination.

protected FileDescriptor getFileDescriptor()

Gets the datagram socket file descriptor.

protected int getLocalPort()

Gets the local port.

protected <T> T getOption​(SocketOption<T> name)

Called to get a socket option.

protected abstract int getTimeToLive()

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

protected abstract byte getTTL()

Deprecated.

use getTimeToLive instead.
protected abstract void join​(InetAddress inetaddr)

Join the multicast group.

protected abstract void joinGroup​(SocketAddress mcastaddr, NetworkInterface netIf)

Join the multicast group.

protected abstract void leave​(InetAddress inetaddr)

Leave the multicast group.

protected abstract void leaveGroup​(SocketAddress mcastaddr, NetworkInterface netIf)

Leave the multicast group.

protected abstract int peek​(InetAddress i)

Peek at the packet to see who it is from.

protected abstract int peekData​(DatagramPacket p)

Peek at the packet to see who it is from.

protected abstract void receive​(DatagramPacket p)

Receive the datagram packet.

protected abstract void send​(DatagramPacket p)

Sends a datagram packet.

protected <T> void setOption​(SocketOption<T> name, T value)

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)

Deprecated.

use setTimeToLive instead.
protected Set<SocketOption<?>> supportedOptions()

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

Methods declared in interface java.net.SocketOptions

getOption, setOption

Field Detail

localPort

protected int localPort

The local port number.

fd

protected FileDescriptor fd

The file descriptor object.

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