Module  java.base
软件包  java.net

Class DatagramSocketImpl

  • All Implemented Interfaces:
    SocketOptions


    public abstract class DatagramSocketImpl
    extends Object
    implements SocketOptions
    抽象数据报和组播套接字实现基类。
    从以下版本开始:
    1.1
    • 字段详细信息

      • localPort

        protected int localPort
        本地端口号。
    • 构造方法详细信息

      • 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。 注意,不能保证会抛出异常。

        参数
        address - 要连接的远程InetAddress
        port - 远程端口号
        异常
        SocketException - 如果套接字无法连接到远程目标,可能会抛出
        从以下版本开始:
        1.4
      • disconnect

        protected void disconnect​()
        从其远程目标断开数据报套接字。
        从以下版本开始:
        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()
      • getTTL

        @Deprecated
        protected abstract byte getTTL​()
                                throws IOException
        已过时。 使用getTimeToLive代替。
        检索TTL(生存时间)选项。
        结果
        一个表示TTL值的字节
        异常
        IOException - 如果在检索生存时间选项时发生I / O异常
        另请参见:
        setTTL(byte)
      • setTimeToLive

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

        protected abstract int getTimeToLive​()
                                      throws IOException
        检索TTL(生存时间)选项。
        结果
        一个 int代表生存时间价值
        异常
        IOException - 如果在检索生存时间选项时发生I / O异常
        另请参见:
        setTimeToLive(int)
      • 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​()
        关闭插座。
      • getLocalPort

        protected int getLocalPort​()
        获取本地端口。
        结果
        一个表示本地端口值的 int
      • getFileDescriptor

        protected FileDescriptor getFileDescriptor​()
        获取数据报套接字文件描述符。
        结果
        一个表示数据报套接字文件描述符的 FileDescriptor对象
      • setOption

        protected <T> void setOption​(SocketOption<T> name,
                                     T value)
                              throws IOException
        调用设置套接字选项。
        参数类型
        T - 套接字选项值的类型
        参数
        name - 套接字选项
        value - 套接字选项的值。 值为null可能对某些选项有效。
        异常
        UnsupportedOperationException - 如果DatagramSocketImpl不支持该选项
        NullPointerException - 如果名字是 null
        IOException - 如果尝试设置选项时发生I / O问题
        从以下版本开始:
        9
      • getOption

        protected <T> T getOption​(SocketOption<T> name)
                           throws IOException
        被称为获取套接字选项。
        参数类型
        T - 套接字选项值的类型
        参数
        name - 套接字选项
        结果
        套接字选项
        异常
        UnsupportedOperationException - 如果DatagramSocketImpl不支持该选项
        NullPointerException - 如果名字是 null
        IOException - 如果尝试设置选项时发生I / O问题
        从以下版本开始:
        9
      • supportedOptions

        protected Set<SocketOption<?>> supportedOptions​()
        返回一个由此impl和该impl的套接字(DatagramSocket或MulticastSocket)支持的SocketOptions,
        结果
        一套SocketOptions
        从以下版本开始:
        9