模块 java.base
 java.net

类 DatagramSocketImpl

java.lang.Object
java.net.DatagramSocketImpl
所有已实现的接口:
SocketOptions

public abstract class DatagramSocketImpl extends Object implements SocketOptions
抽象数据报和多播套接字实现基类。
自从:
1.1
  • 字段详细信息

    • localPort

      protected int localPort
      本地端口号。
    • fd

      protected FileDescriptor  fd
      文件描述符对象。
  • 构造方法详细信息

    • DatagramSocketImpl

      public DatagramSocketImpl()
      子类调用的构造方法。
  • 方法详情

    • create

      protected abstract void create() throws SocketException
      创建数据报套接字。
      抛出:
      SocketException - 如果底层协议出现错误,例如 TCP 错误。
    • bind

      protected abstract void bind(int lport, InetAddress  laddr) throws SocketException
      将数据报套接字绑定到本地端口和地址。
      参数:
      lport - 本地端口
      laddr - 本地地址
      抛出:
      SocketException - 如果底层协议出现错误,例如 TCP 错误。
    • send

      protected abstract void send(DatagramPacket  p) throws IOException
      发送数据报包。该数据包包含数据和要将数据包发送到的目标地址。
      参数:
      p - 要发送的数据包。
      抛出:
      IOException - 如果在发送数据报包时发生 I/O 异常。
      PortUnreachableException - 如果套接字连接到当前无法到达的目的地,则可能会抛出。请注意,不能保证会抛出异常。
    • connect

      protected void connect(InetAddress  address, int port) throws SocketException
      将数据报套接字连接到远程目标。这将远程地址与本地套接字相关联,以便数据报只能发送到该目的地并从该目的地接收。这可能会被重写以调用本机系统连接。

      如果套接字连接到的远程目的地不存在,或者无法到达,并且如果已收到该地址的 ICMP 目的地无法到达的数据包,则随后的发送或接收调用可能会抛出 PortUnreachableException。请注意,不能保证会抛出异常。

      实现要求:
      此方法的默认实现抛出 SocketException
      参数:
      address - 要连接的远程 InetAddress
      port - 远程端口号
      抛出:
      SocketException - 如果套接字无法连接到远程目标可能会抛出
      自从:
      1.4
    • disconnect

      protected void disconnect()
      断开数据报套接字与其远程目标的连接。
      实现要求:
      此方法的默认实现抛出 UncheckedIOException
      抛出:
      UncheckedIOException - 如果断开连接失败或未提供实现
      自从:
      1.4
    • peek

      protected abstract int peek(InetAddress  i) throws IOException
      查看包裹,看看它来自谁。将指定的 InetAddress 更新为数据包的来源地址。
      参数:
      i - InetAddress 对象
      返回:
      数据包来自的端口号。
      抛出:
      IOException - 如果发生 I/O 异常
      PortUnreachableException - 如果套接字连接到当前无法到达的目的地,则可能会抛出。请注意,不能保证会抛出异常。
    • peekData

      protected abstract int peekData(DatagramPacket  p) throws IOException
      查看包裹,看看它来自谁。数据被复制到指定的 DatagramPacket 中。返回数据,但不使用数据,因此后续的 peekData/receive 操作将看到相同的数据。
      参数:
      p - 收到的数据包。
      返回:
      数据包来自的端口号。
      抛出:
      IOException - 如果发生 I/O 异常
      PortUnreachableException - 如果套接字连接到当前无法到达的目的地,则可能会抛出。请注意,不能保证会抛出异常。
      自从:
      1.4
    • receive

      protected abstract void receive(DatagramPacket  p) throws IOException
      接收数据报包。
      参数:
      p - 收到的数据包。
      抛出:
      IOException - 如果在接收数据报包时发生 I/O 异常。
      PortUnreachableException - 如果套接字连接到当前无法到达的目的地,则可能会抛出。请注意,不能保证会抛出异常。
    • setTTL

      @Deprecated protected abstract void setTTL(byte ttl) throws IOException
      已弃用。
      请改用 setTimeToLive。
      设置 TTL(生存时间)选项。
      参数:
      ttl - 指定 TTL 值的字节
      抛出:
      IOException - 如果在设置生存时间选项时发生 I/O 异常。
      参见:
    • getTTL

      @Deprecated protected abstract byte getTTL() throws IOException
      已弃用。
      请改用 getTimeToLive。
      检索 TTL(生存时间)选项。
      返回:
      表示 TTL 值的字节
      抛出:
      IOException - 如果在检索生存时间选项时发生 I/O 异常
      参见:
    • setTimeToLive

      protected abstract void setTimeToLive(int ttl) throws IOException
      设置 TTL(生存时间)选项。
      参数:
      ttl - 一个 int 指定生存时间值
      抛出:
      IOException - 如果在设置生存时间选项时发生 I/O 异常。
      参见:
    • getTimeToLive

      protected abstract int getTimeToLive() throws IOException
      检索 TTL(生存时间)选项。
      返回:
      int 表示生存时间值
      抛出:
      IOException - 如果在检索生存时间选项时发生 I/O 异常
      参见:
    • join

      protected abstract void join(InetAddress  inetaddr) throws IOException
      加入多播组。
      参数:
      inetaddr - 要加入的多播地址。
      抛出:
      IOException - 如果在加入多播组时发生 I/O 异常。
    • leave

      protected abstract void leave(InetAddress  inetaddr) throws IOException
      离开多播组。
      参数:
      inetaddr - 要离开的多播地址。
      抛出:
      IOException - 如果在离开多播组时发生 I/O 异常。
    • joinGroup

      protected abstract void joinGroup(SocketAddress  mcastaddr, NetworkInterface  netIf) throws IOException
      加入多播组。
      参数:
      mcastaddr - 要加入的地址。
      netIf - 指定接收多播数据报包的本地接口
      抛出:
      IOException - 如果在加入多播组时发生 I/O 异常
      自从:
      1.4
    • leaveGroup

      protected abstract void leaveGroup(SocketAddress  mcastaddr, NetworkInterface  netIf) throws IOException
      离开多播组。
      参数:
      mcastaddr - 要离开的地址。
      netIf - 指定离开组的本地接口
      抛出:
      IOException - 如果在离开多播组时发生 I/O 异常
      自从:
      1.4
    • close

      protected abstract void close()
      关闭socket。
    • getLocalPort

      protected int getLocalPort()
      获取本地端口。
      返回:
      一个 int 表示本地端口值
    • getFileDescriptor

      protected FileDescriptor  getFileDescriptor()
      获取数据报套接字文件描述符。
      返回:
      代表数据报套接字文件描述符的 FileDescriptor 对象
    • setOption

      protected <T> void setOption(SocketOption <T> name, T value) throws IOException
      调用以设置套接字选项。
      实现要求:
      此方法的默认实现首先检查给定的套接字选项 name 不为空,然后抛出 UnsupportedOperationException 。子类应使用适当的实现覆盖此方法。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      value - 套接字选项的值。 null 的值可能对某些选项有效。
      抛出:
      UnsupportedOperationException - 如果 DatagramSocketImpl 不支持该选项
      IllegalArgumentException - 如果该值对选项无效
      IOException - 如果发生 I/O 错误,或者套接字已关闭
      NullPointerException - 如果名字是 null
      自从:
      9
    • getOption

      protected <T> T getOption(SocketOption <T> name) throws IOException
      调用以获取套接字选项。
      实现要求:
      此方法的默认实现首先检查给定的套接字选项 name 不为空,然后抛出 UnsupportedOperationException 。子类应使用适当的实现覆盖此方法。
      类型参数:
      T - 套接字选项值的类型
      参数:
      name - 套接字选项
      返回:
      套接字选项
      抛出:
      UnsupportedOperationException - 如果 DatagramSocketImpl 不支持该选项
      IOException - 如果发生 I/O 错误,或者套接字已关闭
      NullPointerException - 如果名字是 null
      自从:
      9
    • supportedOptions

      protected Set <SocketOption <?>> supportedOptions()
      返回此 impl 和此 impl 的套接字(DatagramSocket 或 MulticastSocket)支持的一组 SocketOptions
      实现要求:
      此方法的默认实现返回一个空集。子类应使用适当的实现重写此方法。
      返回:
      一组 SocketOptions
      自从:
      9