Module  java.base
软件包  java.net

Class DatagramPacket



  • public final class DatagramPacket
    extends Object
    该类表示数据报包。

    数据报包用于实现无连接分组传送服务。 仅基于该数据包中包含的信息,每个消息从一台机器路由到另一台机器。 从一台机器发送到另一台机器的多个分组可能会有不同的路由,并且可能以任何顺序到达。 包传送不能保证。

    从以下版本开始:
    1.0
    • 构造方法摘要

      构造方法  
      Constructor 描述
      DatagramPacket​(byte[] buf, int length)
      构造一个 DatagramPacket用于接收长度为 length数据包。
      DatagramPacket​(byte[] buf, int offset, int length)
      构造一个 DatagramPacket用于接收长度为 length数据包,指定缓冲区的偏移量。
      DatagramPacket​(byte[] buf, int offset, int length, InetAddress address, int port)
      构造一个数据包,发送长度为 length的数据包,其中偏移量为 ioffset到指定主机上的指定端口号。
      DatagramPacket​(byte[] buf, int offset, int length, SocketAddress address)
      构造一个数据报包,发送长度为 length的数据包,偏移量为 ioffset到指定主机上的指定端口号。
      DatagramPacket​(byte[] buf, int length, InetAddress address, int port)
      构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
      DatagramPacket​(byte[] buf, int length, SocketAddress address)
      构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
    • 方法摘要

      所有方法  接口方法  具体的方法 
      Modifier and Type 方法 描述
      InetAddress getAddress​()
      返回该数据报发送或接收数据报的计算机的IP地址。
      byte[] getData​()
      返回数据缓冲区。
      int getLength​()
      返回要发送的数据的长度或接收到的数据的长度。
      int getOffset​()
      返回要发送的数据的偏移量或接收到的数据的偏移量。
      int getPort​()
      返回发送数据报的远程主机上的端口号,或从中接收数据报的端口号。
      SocketAddress getSocketAddress​()
      获取该数据包发送到或正在从其发送的远程主机的SocketAddress(通常为IP地址+端口号)。
      void setAddress​(InetAddress iaddr)
      设置该数据报发送到的机器的IP地址。
      void setData​(byte[] buf)
      设置此数据包的数据缓冲区。
      void setData​(byte[] buf, int offset, int length)
      设置此数据包的数据缓冲区。
      void setLength​(int length)
      设置此数据包的长度。
      void setPort​(int iport)
      设置发送此数据报的远程主机上的端口号。
      void setSocketAddress​(SocketAddress address)
      设置该数据报发送到的远程主机的SocketAddress(通常是IP地址+端口号)。
    • 构造方法详细信息

      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int offset,
                              int length)
        构造一个DatagramPacket用于接收长度为length数据包,指定缓冲区中的偏移量。

        length参数必须小于或等于buf.length

        参数
        buf - 用于保存传入数据报的缓冲区。
        offset - 缓冲区的偏移量
        length - 要读取的字节数。
        从以下版本开始:
        1.2
      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int length)
        构造一个DatagramPacket用于接收长度为length数据包。

        length参数必须小于或等于buf.length

        参数
        buf - 用于保存传入数据报的缓冲区。
        length - 要读取的字节数。
      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int offset,
                              int length,
                              InetAddress address,
                              int port)
        构造一个数据报包,发送长度为length的数据包,偏移量为ioffset到指定主机上的指定端口号。 length参数必须小于或等于buf.length
        参数
        buf - 数据包数据。
        offset - 数据包数据偏移量。
        length - 数据包的数据长度。
        address - 目的地址。
        port - 目的端口号。
        从以下版本开始:
        1.2
        另请参见:
        InetAddress
      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int offset,
                              int length,
                              SocketAddress address)
        构造一个数据包数据包,发送长度为length的数据包,偏移量为ioffset到指定主机上的指定端口号。 length参数必须小于或等于buf.length
        参数
        buf - 分组数据。
        offset - 分组数据偏移量。
        length - 数据包的数据长度。
        address - 目标套接字地址。
        异常
        IllegalArgumentException - 如果不支持地址类型
        从以下版本开始:
        1.4
        另请参见:
        InetAddress
      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int length,
                              InetAddress address,
                              int port)
        构建一个数据包,发送长度为length的数据包到指定主机上的指定端口号。 length参数必须小于或等于buf.length
        参数
        buf - 分组数据。
        length - 包长度。
        address - 目的地址。
        port - 目的端口号。
        另请参见:
        InetAddress
      • DatagramPacket

        public DatagramPacket​(byte[] buf,
                              int length,
                              SocketAddress address)
        构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号。 length参数必须小于或等于buf.length
        参数
        buf - 数据包数据。
        length - 包长度。
        address - 目的地址。
        异常
        IllegalArgumentException - 如果不支持地址类型
        从以下版本开始:
        1.4
        另请参见:
        InetAddress
    • 方法详细信息

      • getPort

        public int getPort​()
        返回发送数据报的远程主机上的端口号,或从中接收数据报的端口号。
        结果
        该数据报正在发送或从其接收数据报的远程主机上的端口号。
        另请参见:
        setPort(int)
      • getData

        public byte[] getData​()
        返回数据缓冲区。 收到的数据或要发送的数据从缓冲区中的offset开始运行, lengthlength
        结果
        用于接收或发送数据的缓冲区
        另请参见:
        setData(byte[], int, int)
      • getOffset

        public int getOffset​()
        返回要发送的数据的偏移量或接收到的数据的偏移量。
        结果
        要发送的数据的偏移量或接收的数据的偏移量。
        从以下版本开始:
        1.2
      • getLength

        public int getLength​()
        返回要发送的数据的长度或接收到的数据的长度。
        结果
        要发送的数据的长度或接收到的数据的长度。
        另请参见:
        setLength(int)
      • setData

        public void setData​(byte[] buf,
                            int offset,
                            int length)
        设置此数据包的数据缓冲区。 这设置数据包的数据,长度和偏移量。
        参数
        buf - 为此数据包设置的缓冲区
        offset - 数据的偏移量
        length - 数据的长度和/或用于接收数据的缓冲区的长度
        异常
        NullPointerException - 如果参数为空
        从以下版本开始:
        1.2
        另请参见:
        getData()getOffset()getLength()
      • setAddress

        public void setAddress​(InetAddress iaddr)
        设置该数据报发送到的机器的IP地址。
        参数
        iaddr - InetAddress
        从以下版本开始:
        1.1
        另请参见:
        getAddress()
      • setPort

        public void setPort​(int iport)
        设置发送此数据报的远程主机上的端口号。
        参数
        iport - 端口号
        从以下版本开始:
        1.1
        另请参见:
        getPort()
      • setSocketAddress

        public void setSocketAddress​(SocketAddress address)
        设置该数据报发送到的远程主机的SocketAddress(通常是IP地址+端口号)。
        参数
        address - SocketAddress
        异常
        IllegalArgumentException - 如果地址为空,或者是此套接字不支持的SocketAddress子类
        从以下版本开始:
        1.4
        另请参见:
        getSocketAddress()
      • getSocketAddress

        public SocketAddress getSocketAddress​()
        获取该数据包发送到或正在从其发送的远程主机的SocketAddress(通常为IP地址+端口号)。
        结果
        SocketAddress
        从以下版本开始:
        1.4
        另请参见:
        setSocketAddress(java.net.SocketAddress)
      • setData

        public void setData​(byte[] buf)
        设置此数据包的数据缓冲区。 将此DatagramPacket的偏移设置为0,并将长度设置为长度为buf
        参数
        buf - 为此数据包设置的缓冲区。
        异常
        NullPointerException - 如果参数为空。
        从以下版本开始:
        1.1
        另请参见:
        getLength()getData()
      • setLength

        public void setLength​(int length)
        设置此数据包的长度。 分组的长度是要发送的数据包的数据缓冲区中的字节数,或将用于接收数据的数据包的数据缓冲区的字节数。 长度必须小于或等于偏移量加上数据包缓冲区的长度。
        参数
        length - 为此数据包设置的长度。
        异常
        IllegalArgumentException - 如果长度大于数据包的数据缓冲区长度,则为长度。
        从以下版本开始:
        1.1
        另请参见:
        getLength()setData(byte[], int, int)