Package java.net

Class DatagramSocketImpl

java.lang.Object
java.net.DatagramSocketImpl
All Implemented Interfaces:
SocketOptions
Direct Known Subclasses:
PlainDatagramSocketImpl

public abstract class DatagramSocketImpl
extends Object
implements SocketOptions
The abstract superclass for datagram and multicast socket implementations.
  • Field Details

    • fd

      protected FileDescriptor fd
      File descriptor that is used to address this socket.
    • localPort

      protected int localPort
      The number of the local port to which this socket is bound.
  • Constructor Details

    • DatagramSocketImpl

      public DatagramSocketImpl()
      Constructs an unbound datagram socket implementation.
  • Method Details

    • bind

      protected abstract void bind​(int port, InetAddress addr) throws SocketException
      Binds the datagram socket to the given localhost/port. Sockets must be bound prior to attempting to send or receive data.
      Parameters:
      port - the port on the localhost to bind.
      addr - the address on the multihomed localhost to bind.
      Throws:
      SocketException - if an error occurs while binding, for example, if the port has been already bound.
    • close

      protected abstract void close()
      Closes this socket.
    • create

      protected abstract void create() throws SocketException
      This method allocates the socket descriptor in the underlying operating system.
      Throws:
      SocketException - if an error occurs while creating the socket.
    • getFileDescriptor

      protected FileDescriptor getFileDescriptor()
      Gets the FileDescriptor of this datagram socket, which is invalid if the socket is closed or not bound.
      Returns:
      the current file descriptor of this socket.
    • getLocalPort

      protected int getLocalPort()
      Returns the local port to which this socket is bound.
    • getTTL

      @Deprecated protected abstract byte getTTL() throws IOException
      Deprecated.
      Use getTimeToLive() instead.
      Gets the time-to-live (TTL) for multicast packets sent on this socket.
      Returns:
      the time-to-live option as a byte value.
      Throws:
      IOException - if an error occurs while getting the time-to-live option value.
      See Also:
      getTimeToLive()
    • getTimeToLive

      protected abstract int getTimeToLive() throws IOException
      Gets the time-to-live (TTL) for multicast packets sent on this socket. The TTL option defines how many routers a packet may be pass before it is discarded.
      Returns:
      the time-to-live option as an integer value.
      Throws:
      IOException - if an error occurs while getting the time-to-live option value.
    • join

      protected abstract void join​(InetAddress addr) throws IOException
      Adds this socket to the multicast group addr. A socket must join a group before being able to receive data. Further, a socket may be a member of multiple groups but may join any group only once.
      Parameters:
      addr - the multicast group to which this socket has to be joined.
      Throws:
      IOException - if an error occurs while joining the specified multicast group.
    • joinGroup

      protected abstract void joinGroup​(SocketAddress addr, NetworkInterface netInterface) throws IOException
      Adds this socket to the multicast group addr. A socket must join a group before being able to receive data. Further, a socket may be a member of multiple groups but may join any group only once.
      Parameters:
      addr - the multicast group to which this socket has to be joined.
      netInterface - the local network interface which will receive the multicast datagram packets.
      Throws:
      IOException - if an error occurs while joining the specified multicast group.
    • leave

      protected abstract void leave​(InetAddress addr) throws IOException
      Removes this socket from the multicast group addr.
      Parameters:
      addr - the multicast group to be left.
      Throws:
      IOException - if an error occurs while leaving the group or no multicast address was assigned.
    • leaveGroup

      protected abstract void leaveGroup​(SocketAddress addr, NetworkInterface netInterface) throws IOException
      Removes this socket from the multicast group addr.
      Parameters:
      addr - the multicast group to be left.
      netInterface - the local network interface on which this socket has to be removed.
      Throws:
      IOException - if an error occurs while leaving the group.
    • peek

      protected abstract int peek​(InetAddress sender) throws IOException
      Peeks at the incoming packet to this socket and returns the address of the sender. The method will block until a packet is received or timeout expires.
      Parameters:
      sender - the origin address of a packet.
      Returns:
      the address of sender as an integer value.
      Throws:
      IOException - if an error or a timeout occurs while reading the address.
    • receive

      protected abstract void receive​(DatagramPacket pack) throws IOException
      Receives data and stores it in the supplied datagram packet pack. This call will block until either data has been received or, if a timeout is set, the timeout has expired. If the timeout expires an InterruptedIOException is thrown.
      Parameters:
      pack - the datagram packet container to fill in the received data.
      Throws:
      IOException - if an error or timeout occurs while receiving data.
    • send

      protected abstract void send​(DatagramPacket pack) throws IOException
      Sends the given datagram packet pack. The packet contains the data and the address and port information of the target host as well.
      Parameters:
      pack - the datagram packet to be sent.
      Throws:
      IOException - if an error occurs while sending the packet.
    • setTimeToLive

      protected abstract void setTimeToLive​(int ttl) throws IOException
      Sets the time-to-live (TTL) option for multicast packets sent on this socket.
      Parameters:
      ttl - the time-to-live option value. Valid values are 0 < ttl <= 255.
      Throws:
      IOException - if an error occurs while setting the option.
    • setTTL

      @Deprecated protected abstract void setTTL​(byte ttl) throws IOException
      Deprecated.
      Use setTimeToLive(int) instead.
      Sets the time-to-live (TTL) option for multicast packets sent on this socket.
      Parameters:
      ttl - the time-to-live option value. Valid values are 0 < ttl <= 255.
      Throws:
      IOException - if an error occurs while setting the option.
      See Also:
      setTimeToLive(int)
    • connect

      protected void connect​(InetAddress inetAddr, int port) throws SocketException
      Connects this socket to the specified remote address and port.
      Parameters:
      inetAddr - the address of the target host which has to be connected.
      port - the port on the target host which has to be connected.
      Throws:
      SocketException - if the datagram socket cannot be connected to the specified remote address and port.
    • disconnect

      protected void disconnect()
      Disconnects this socket from the remote host.
    • peekData

      protected abstract int peekData​(DatagramPacket pack) throws IOException
      Receives data into the supplied datagram packet by peeking. The data is not removed from socket buffer and can be received again by another peekData() or receive() call. This call blocks until either data has been received or, if a timeout is set, the timeout has been expired.
      Parameters:
      pack - the datagram packet used to store the data.
      Returns:
      the port the packet was received from.
      Throws:
      IOException - if an error occurs while peeking at the data.