DatagramSocketImpl (Java SE 21 & JDK 21)
- 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
The file descriptor object.
protected intFields 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 for subclasses to call.
-
Method Summary
protected abstract voidBinds a datagram socket to a local port and address.
protected abstract voidclose()protected voidConnects a datagram socket to a remote destination.
protected abstract voidcreate()Creates a datagram socket.
protected voidDisconnects a datagram socket from its remote destination.
Gets the datagram socket file descriptor.
protected intprotected <T> TCalled to get a socket option.
protected abstract intRetrieve the TTL (time-to-live) option.
protected abstract bytegetTTL()protected abstract voidJoin the multicast group.
protected abstract voidJoin the multicast group.
protected abstract voidLeave the multicast group.
protected abstract voidLeave the multicast group.
protected abstract intPeek at the packet to see who it is from.
protected abstract intPeek at the packet to see who it is from.
protected abstract voidReceive the datagram packet.
protected abstract voidprotected <T> voidCalled to set a socket option.
protected abstract voidsetTimeToLive(int ttl) Set the TTL (time-to-live) option.
protected abstract voidsetTTL(byte ttl) Returns a set of SocketOptions supported by this impl and by this impl's socket (DatagramSocket or MulticastSocket)
-
Field Details
-
localPort
protected int localPort
The local port number.
-
fd
The file descriptor object.
-
-
Constructor Details
-
DatagramSocketImpl
public DatagramSocketImpl()
Constructor for subclasses to call.
-
-
Method Details
-
create
Creates a datagram socket.
- Throws:
SocketException- if there is an error in the underlying protocol, such as a TCP error.
-
bind
Binds a datagram socket to a local port and address.
- Parameters:
lport- the local portladdr- the local address- Throws:
SocketException- if there is an error in the underlying protocol, such as a TCP error.
-
send
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
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 toport- 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.
- Implementation Requirements:
- The default implementation of this method throws
UncheckedIOException. - Throws:
UncheckedIOException- if disconnect fails or no implementation is provided- Since:
- 1.4
-
peek
Peek at the packet to see who it is from. Updates the specified
InetAddressto 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 occursPortUnreachableException- 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
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 occursPortUnreachableException- 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
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
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
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
protected abstract void setTimeToLive
(int ttl) throws IOException Set the TTL (time-to-live) option.
- Parameters:
ttl- anintspecifying the time-to-live value- Throws:
IOException- if an I/O exception occurs while setting the time-to-live option.- See Also:
-
getTimeToLive
protected abstract int getTimeToLive() throws IOException
Retrieve the TTL (time-to-live) option.
- Returns:
- an
intrepresenting the time-to-live value - Throws:
IOException- if an I/O exception occurs while retrieving the time-to-live option- See Also:
-
join
Join the multicast group.
- Parameters:
inetaddr- multicast address to join.- Throws:
IOException- if an I/O exception occurs while joining the multicast group.
-
leave
Leave the multicast group.
- Parameters:
inetaddr- multicast address to leave.- Throws:
IOException- if an I/O exception occurs while leaving the multicast group.
-
joinGroup
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
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
intrepresenting the local port value
-
getFileDescriptor
Gets the datagram socket file descriptor.
- Returns:
- a
FileDescriptorobject representing the datagram socket file descriptor
-
setOption
Called to set a socket option.
- Implementation Requirements:
- The default implementation of this method first checks that the given
socket option
nameis not null, then throwsUnsupportedOperationException. Subclasses should override this method with an appropriate implementation. - Type Parameters:
T- The type of the socket option value- Parameters:
name- The socket optionvalue- The value of the socket option. A value ofnullmay be valid for some options.- Throws:
UnsupportedOperationException- if the DatagramSocketImpl does not support the optionIllegalArgumentException- if the value is not valid for the optionIOException- if an I/O error occurs, or if the socket is closedNullPointerException- if name isnull- Since:
- 9
-
getOption
Called to get a socket option.
- Implementation Requirements:
- The default implementation of this method first checks that the given
socket option
nameis not null, then throwsUnsupportedOperationException. 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 optionIOException- if an I/O error occurs, or if the socket is closedNullPointerException- if name isnull- Since:
- 9
-
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
-