- java.lang.Object
-
- java.net.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 inherited from 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 inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.net.SocketOptions
getOption, setOption
-
-
-
-
Field Detail
-
localPort
protected int localPort
The local port number.
-
fd
protected FileDescriptor fd
The file descriptor object.
-
-
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 portladdr
- 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 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.- Since:
- 1.4
-
peek
protected abstract int peek(InetAddress i) throws IOException
Peek at the packet to see who it is from. Updates the specifiedInetAddress
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 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
protected abstract int peekData(DatagramPacket p) throws IOException
Peek at the packet to see who it is from. The data is copied into the specifiedDatagramPacket
. 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
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
- anint
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 optionvalue
- The value of the socket option. A value ofnull
may be valid for some options.- Throws:
UnsupportedOperationException
- if the DatagramSocketImpl does not support the optionNullPointerException
- if name isnull
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 optionNullPointerException
- if name isnull
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
-
-